Avatar billede Slettet bruger
14. april 2002 - 13:37 Der er 39 kommentarer og
2 løsninger

Syntax for SQL update

Hej.
Jeg har en masse linier her:

' SQL sætning opbygges
strSQL = "Insert into kursus ("

strSQL = strSQL & "kursusnr, "
strSQL = strSQL & "Navn, "
strSQL = strSQL & "Modested, "
strSQL = strSQL & "MinDelt, "
strSQL = strSQL & "MaxDelt, "
strSQL = strSQL & "SidsteTilm, "
strSQL = strSQL & "SidateAfmeld, "
strSQL = strSQL & "Startdag, "
strSQL = strSQL & "StartDato, "
strSQL = strSQL & "SlutDato, "
strSQL = strSQL & "StartTid, "
strSQL = strSQL & "SlutTid, "
strSQL = strSQL & "Ansvarlig, "
strSQL = strSQL & "Instruktor, "
strSQL = strSQL & "InsteMail, "
strSQL = strSQL & "Aflyst, "
strSQL = strSQL & "Kkategori, "
strSQL = strSQL & "Booked, "
strSQL = strSQL & "Pris, "
strSQL = strSQL & "MaalGruppe, "
strSQL = strSQL & "Bemaerk, "
strSQL = strSQL & "Lock, "
strSQL = strSQL & "Ident, "
strSQL = strSQL & "KostPris, "
strSQL = strSQL & "Begrund, "
strSQL = strSQL & "Beskriv, "
strSQL = strSQL & "Semester" & ") "

strSQL = strSQL & "values( "

strSQL = strSQL & Request.Form("'kursusnr', ")
strSQL = strSQL & Request.Form("'Navn', ")
strSQL = strSQL & Request.Form("'Modested', ")
strSQL = strSQL & Request.Form("'MinDelt', ")
strSQL = strSQL & Request.Form("'MaxDelt', ")
strSQL = strSQL & Request.Form("'SidsteTilm', ")
strSQL = strSQL & Request.Form("'SidsteAfmeld', ")
strSQL = strSQL & Request.Form("'Startdag', ")
strSQL = strSQL & Request.Form("'StartDato', ")
strSQL = strSQL & Request.Form("'SlutDato', ")
strSQL = strSQL & Request.Form("'StartTid', ")
strSQL = strSQL & Request.Form("'SlutTid', ")
strSQL = strSQL & Request.Form("'Ansvarlig', ")
strSQL = strSQL & Request.Form("'Instruktor', ")
strSQL = strSQL & Request.Form("'InsteMail', ")
strSQL = strSQL & Request.Form("'Aflyst', ")
strSQL = strSQL & Request.Form("'Kkategori', ")
strSQL = strSQL & Request.Form("'Booked', ")
strSQL = strSQL & Request.Form("'Pris', ")
strSQL = strSQL & Request.Form("'MaalGruppe', ")
strSQL = strSQL & Request.Form("'Bemaerk', ")
strSQL = strSQL & Request.Form("'Lock', ")
strSQL = strSQL & Request.Form("'Ident', ")
strSQL = strSQL & Request.Form("'KostPris', ")
strSQL = strSQL & Request.Form("'Begrund', ")
strSQL = strSQL & Request.Form("'Beskriv', ")
strSQL = strSQL & Request.Form("'Semester'") & ");"

' SQL sætning eksekveres
Conn.Execute(strSQL)

og i sidste linie får jeg fejl lige meget hvordan jeg prøver at skrive det.

Er her en der lige kan fortælle mig den rigtige syntax på 1 eller 2 af linierne så jeg kan rette skidtet til og så det virker bagefter.

På forhånd mange tak.

Avatar billede medions Nybegynder
14. april 2002 - 13:38 #1
strSQL = "UPDATE tabel SET efternavn = '" & Text1.Text & "' WHERE navn = '" & Label1.Caption & "'"
      Conn.Execute (strSQL)

//>Rune
Avatar billede Slettet bruger
14. april 2002 - 13:41 #2
Da fatter jeg ikke meget af. Mener du at jeg skal tilføje den linie, eller ? Kan du ikke bruge et eksempel med den navne der står så jeg har en chance for at hitte ud af det ?
Avatar billede eagleeye Praktikant
14. april 2002 - 13:42 #3
Alle dine request skal laves sådan her: Request.Form("kursusnr")
Ikke som du skrev: Request.Form("'kursusnr', ")
det du skriver inde i Form("...") er navnet på det indtasnings felt som er på formen.

Så de sidste skal være:

Hvis det er tal du ligger i databasen skal der ikke ' omkring i SQQL-sætningen:
strSQL = strSQL & Request.Form("kursusnr") & ","
Hvis det er tekst skal der ' omkring data i SQL-sætningen:
strSQL = strSQL & "'" & Request.Form("Navn") & "',"
Avatar billede Slettet bruger
14. april 2002 - 13:46 #4
eagleeye
Det tester jeg lige. Det er jo en større omskrivning :-)
Avatar billede Slettet bruger
14. april 2002 - 13:51 #5
datofelter regnes de som tal ?
Avatar billede eagleeye Praktikant
14. april 2002 - 13:55 #6
Hvis du har access mener jeg der skal # omrking eller er det som som ved tal.
Avatar billede Slettet bruger
14. april 2002 - 13:58 #7
Det er access og nu får jeg følgende fejl

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression ''Aalborg,10,16,10 maj 2002 ,10 maj 2002 ,'tirsdag'.
Avatar billede eagleeye Praktikant
14. april 2002 - 14:00 #8
så skal der # omkring dato'en
Avatar billede Slettet bruger
14. april 2002 - 14:01 #9
Ok nu fik jeg rette nogle fejl :-) og har så dette tilbage som sikkert rettes med dit nye hint.


Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '10 maj 2002'.
Avatar billede Slettet bruger
14. april 2002 - 14:04 #10
Jeg har nu problemer med disse to

strSQL = strSQL & Request.Form("#StartDato#") & ","
strSQL = strSQL & Request.Form("#SlutDato#") & ","
Avatar billede coltau Juniormester
14. april 2002 - 14:10 #11
Det er klart:

strSQL = strSQL & "#" & Request.Form("StartDato") & "#,"
Avatar billede Slettet bruger
14. april 2002 - 14:14 #12
Den skriver stadig fejlen fra ovenstående med  '10 maj 2002'

er det fordi der er tekst i (  maj  ) ?
Avatar billede eagleeye Praktikant
14. april 2002 - 14:19 #13
Ja det kunne godt være har du prøvet at skriv 10-05-2002 ?
Avatar billede Slettet bruger
14. april 2002 - 14:19 #14
Jeg er ved at prøve.
Avatar billede coltau Juniormester
14. april 2002 - 14:21 #15
Hvis du skriver 10-05-2002 så gemmer Access jo datoen 5 oktober. Det skal formateres efter MM-DD-YYYY
Avatar billede coltau Juniormester
14. april 2002 - 14:25 #16
Put denne fuktion i toppen af koden

function FDate(V) ' Formatér dato til Access-SQL-syntax MM-DD-YYYY
  FDate = Month(V) & "-" & Day(V) & "-" & year(V)
end function

og ændre linierne således:

strSQL = strSQL & "#" & FDate(Request.Form("StartDato")) & "#,"
Avatar billede eagleeye Praktikant
14. april 2002 - 14:27 #17
Ja du kan når du trækker ud fra databasen:

strSQL = "SELECT *, format(datofelt,'dd-mmm-yyyy') as DatoF FROM ...

set rs = connection.execute (strSQL)
udskrive datoen med: response.write rs("DatoF")
Avatar billede Slettet bruger
14. april 2002 - 14:33 #18
Der kommer nu

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
Avatar billede Slettet bruger
14. april 2002 - 14:33 #19
og den er ikke let at gennemskue.
Avatar billede eagleeye Praktikant
14. april 2002 - 14:42 #20
Det kunne tyde på at der et kolonne navn som er stavet forkert

Jeg hentyder til disse:
strSQL = strSQL & "kursusnr, "
strSQL = strSQL & "Navn, "
Avatar billede eagleeye Praktikant
14. april 2002 - 14:50 #21
denne kunne være et bud på stave fejl:

strSQL = strSQL & "Kkategori, "  <--- 2 K'er i kategori
Avatar billede Slettet bruger
14. april 2002 - 14:52 #22
Nu skriver den dette ved et textarea som er "beskriv"

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression
Avatar billede Slettet bruger
14. april 2002 - 14:53 #23
Kkategori er rigtig nok, men jeg fandt en fejl ved Sidste..... men det hjalp ikke, så der er stadig noget galt.
Avatar billede coltau Juniormester
14. april 2002 - 14:54 #24
Her har du som vi forestiller os koden:

<%
function FDate(V) ' Formatér dato til Access-SQL-syntax MM-DD-YYYY
  FDate = Month(V) & "-" & Day(V) & "-" & year(V)
end function

strSQL = "Insert into kursus ("

strSQL = strSQL & "kursusnr, "
strSQL = strSQL & "Navn, "
strSQL = strSQL & "Modested, "
strSQL = strSQL & "MinDelt, "
strSQL = strSQL & "MaxDelt, "
strSQL = strSQL & "SidsteTilm, "
strSQL = strSQL & "SidateAfmeld, "
strSQL = strSQL & "Startdag, "
strSQL = strSQL & "StartDato, "
strSQL = strSQL & "SlutDato, "
strSQL = strSQL & "StartTid, "
strSQL = strSQL & "SlutTid, "
strSQL = strSQL & "Ansvarlig, "
strSQL = strSQL & "Instruktor, "
strSQL = strSQL & "InsteMail, "
strSQL = strSQL & "Aflyst, "
strSQL = strSQL & "Kkategori, "
strSQL = strSQL & "Booked, "
strSQL = strSQL & "Pris, "
strSQL = strSQL & "MaalGruppe, "
strSQL = strSQL & "Bemaerk, "
strSQL = strSQL & "Lock, "
strSQL = strSQL & "Ident, "
strSQL = strSQL & "KostPris, "
strSQL = strSQL & "Begrund, "
strSQL = strSQL & "Beskriv, "
strSQL = strSQL & "Semester" & ") "

strSQL = strSQL & "values( "

strSQL = strSQL & Request.Form("kursusnr") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Navn") & "'," ' Tekst
strSQL = strSQL & Request.Form("Modested") & "," ' Tal
strSQL = strSQL & Request.Form("MinDelt") & "," ' Tal
strSQL = strSQL & Request.Form("MaxDelt") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("SidsteTilm") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("SidsteAfmeld") & "'," ' Tekst
strSQL = strSQL & Request.Form("Startdag") & "," ' Tal
strSQL = strSQL & "#" & FDate(Request.Form("StartDato")) & "#," ' Dato
strSQL = strSQL & "#" & FDate(Request.Form("SlutDato"))) & "#," ' Dato
strSQL = strSQL & Request.Form("StartTid") & "," ' Tal
strSQL = strSQL & Request.Form("SlutTid") & "," ' Tal
strSQL = strSQL & Request.Form("Ansvarlig") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Instruktor") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("InsteMail") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Aflyst") & "'," ' Tekst
strSQL = strSQL & Request.Form("Kkategori") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Booked") & "'," ' Tekst
strSQL = strSQL & CCur(Request.Form("Pris")) & "," ' beløb
strSQL = strSQL & Request.Form("MaalGruppe") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Bemaerk") & "'," ' Tekst
strSQL = strSQL & Request.Form("Lock") & "," ' Tal
strSQL = strSQL & Request.Form("Ident") & "," ' Tal
strSQL = strSQL & CCur(Request.Form("KostPris")) & "," ' beløb
strSQL = strSQL & "'" & Request.Form("Begrund") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Beskriv") & "'," ' Tekst
strSQL = strSQL & Request.Form("Semester") & ");" ' Tal

' SQL sætning eksekveres
Conn.Execute(strSQL)
%>

Du skal kontrollere om de typer jeg har gættet mig til er rigtige ellers skal de ændres.

Du skal bare sikre at alle felter udfyldt. Hvis du tillader blanke felter skal der også tages højde for det.
Avatar billede coltau Juniormester
14. april 2002 - 14:55 #25
Hvis eks. Beskriv er blank skal linien ændres fra dette:

strSQL = strSQL & "'" & Request.Form("Beskriv") & "'," ' Tekst

til dette:

strSQL = strSQL & "NULL," ' Tekst
Avatar billede eagleeye Praktikant
14. april 2002 - 14:56 #26
Kan det tænkes du i din beskrivelse har indtasted et ' ?? for så skal du lige lave et ' om til to ' i en SQL tekst streng, det fordi en ' starter og slutter en streng i SQL-strengen og to '' efter hinanden fortæller at teksten forsætter og man har en kareter ' i sin streng.

strSQL = strSQL & "'" & replace(request.form("beskriv"),"'","''") & "',"
Avatar billede Slettet bruger
14. april 2002 - 14:57 #27
Jeg har lige skrevet det ud du sendte før så jeg kan sammenligne.

Angående tomme felter havde jeg lige prøvet at udfylde alle og fik så den fejl ved textarea feltet. Men ellers kan der meget vel være tomme felter i det.
Avatar billede coltau Juniormester
14. april 2002 - 15:00 #28
Det kan dog være at du skal ændre beløbslinierne til dette:

strSQL = strSQL & "'" & Request.Form("Pris") & "'," ' beløb i tekstform
Avatar billede eagleeye Praktikant
14. april 2002 - 15:00 #29
hvis det er tekst fejter gør det ikke noget de er tomme hvis du i databasen har sat Tillag Null-længde for hver kolonne.
Avatar billede Slettet bruger
14. april 2002 - 15:01 #30
Tak for den linie til beskriv, dete hjalp tilsyneladende på den, og så kom:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression '#0900#'.
Avatar billede eagleeye Praktikant
14. april 2002 - 15:04 #31
Det er fordi en kolonne i databasen ikke har samme data type som det du overføre i SQL-sætningen.

Er det et klokke slet 0900 ??? eller hvis du har sat # omkring og det er defineret som tekst i databasen kommer denne og omvendt.
Avatar billede Slettet bruger
14. april 2002 - 15:08 #32
tid var sat til # og er nu rettet til tekstfelt som det er i basen. Og så kom denne.

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

og jeg som troede det bare var en lille fejl :-)
Avatar billede eagleeye Praktikant
14. april 2002 - 15:13 #33
har du brugt den SQL som coltau har lavet i indlæg fra 14/04-2002 14:54:02  ??

Passer de antagelser for hver felt med det som er defineret i databasen.
Fejl betyder at der stadig er fejl i datatyperne imellem SQL sætningen og det som er defineret i databasen. Prøv for en sikkerhedskyld at løbe alle igennen igen og se at alle tekst felter har ' omkring i SQL og alle tal felter ikke har.
Avatar billede Slettet bruger
14. april 2002 - 15:15 #34
Her er som de er oprettet i databasen, og jeg kan da se at der nok var idé i at ændre noget af det. Men nu skulle det jo bare lige virke

strSQL = strSQL & Request.Form("kursusnr") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Navn") & "'," ' Tekst
strSQL = strSQL & Request.Form("Modested") & "," ' Tekst
strSQL = strSQL & Request.Form("MinDelt") & "," ' Tal
strSQL = strSQL & Request.Form("MaxDelt") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("SidsteTilm") & "'," ' Dato og Klokkeslet
strSQL = strSQL & "'" & Request.Form("SidsteAfmeld") & "'," ' Dato og Klokkeslet
strSQL = strSQL & Request.Form("Startdag") & "," ' Tekst
strSQL = strSQL & "#" & FDate(Request.Form("StartDato")) & "#," ' Dato og Klokkeslet
strSQL = strSQL & "#" & FDate(Request.Form("SlutDato"))) & "#," ' Dato og Klokkeslet
strSQL = strSQL & Request.Form("StartTid") & "," ' Tekst
strSQL = strSQL & Request.Form("SlutTid") & "," ' Tekst
strSQL = strSQL & Request.Form("Ansvarlig") & "," ' Tekst
strSQL = strSQL & "'" & Request.Form("Instruktor") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("InsteMail") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Aflyst") & "'," ' Ja/Nej
strSQL = strSQL & Request.Form("Kkategori") & "," ' Tekst
strSQL = strSQL & "'" & Request.Form("Booked") & "'," ' Ja/Nej
strSQL = strSQL & CCur(Request.Form("Pris")) & "," ' Tal
strSQL = strSQL & Request.Form("MaalGruppe") & "," ' Tekst
strSQL = strSQL & "'" & Request.Form("Bemaerk") & "'," ' Tekst
strSQL = strSQL & Request.Form("Lock") & "," ' Tekst
strSQL = strSQL & Request.Form("Ident") & "," ' Tal
strSQL = strSQL & CCur(Request.Form("KostPris")) & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Begrund") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Beskriv") & "'," ' Tekst TextArea
strSQL = strSQL & Request.Form("Semester") & ");" ' Tekst
Avatar billede eagleeye Praktikant
14. april 2002 - 15:18 #35
hvis modested og Startdag er tekst så skal de se sådan ud:

strSQL = strSQL & "'" & Request.Form("Modested") & "', " ' Tekst

strSQL = strSQL & "'" & Request.Form("Startdag") & "', " ' Tekst

ligeledes med starttid/sluttid/ansvarlig/Kkategori/Lock/Semester
Avatar billede eagleeye Praktikant
14. april 2002 - 15:20 #36
sådan her:

strSQL = strSQL & Request.Form("kursusnr") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Navn") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Modested") & "'," ' Tekst
strSQL = strSQL & Request.Form("MinDelt") & "," ' Tal
strSQL = strSQL & Request.Form("MaxDelt") & "," ' Tal
strSQL = strSQL & "'" & Request.Form("SidsteTilm") & "'," ' Dato og Klokkeslet
strSQL = strSQL & "'" & Request.Form("SidsteAfmeld") & "'," ' Dato og Klokkeslet
strSQL = strSQL & "'" & Request.Form("Startdag") & "'," ' Tekst
strSQL = strSQL & "#" & FDate(Request.Form("StartDato")) & "#," ' Dato og Klokkeslet
strSQL = strSQL & "#" & FDate(Request.Form("SlutDato"))) & "#," ' Dato og Klokkeslet
strSQL = strSQL & "'" & Request.Form("StartTid") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("SlutTid") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Ansvarlig") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Instruktor") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("InsteMail") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Aflyst") & "'," ' Ja/Nej
strSQL = strSQL & "'" & Request.Form("Kkategori") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Booked") & "'," ' Ja/Nej
strSQL = strSQL & CCur(Request.Form("Pris")) & "," ' Tal
strSQL = strSQL & "'" & Request.Form("MaalGruppe") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Bemaerk") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Lock") & "'," ' Tekst
strSQL = strSQL & Request.Form("Ident") & "," ' Tal
strSQL = strSQL & CCur(Request.Form("KostPris")) & "," ' Tal
strSQL = strSQL & "'" & Request.Form("Begrund") & "'," ' Tekst
strSQL = strSQL & "'" & Request.Form("Beskriv") & "'," ' Tekst TextArea
strSQL = strSQL & "'" & Request.Form("Semester") & "');" ' Tekst



Hvad gemmer du i det Ja/Nej felt ??
Avatar billede Slettet bruger
14. april 2002 - 15:26 #37
Denne må være en misser
strSQL = strSQL & "#" & FDate(Request.Form("SlutDato"))) & "#," ' Dato og Klokkeslet

og så satte jeg lige den linie ind ved textarea og kom så frem til denne:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

Den forstår jeg ikke.
Avatar billede Slettet bruger
14. april 2002 - 15:30 #38
nu rettede jeg ja/nej til yes/no og så fik jeg denne istedet:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede eagleeye Praktikant
14. april 2002 - 15:38 #39
ja/nej felt skal der ikke ' omkring og man skal ligge 0 for Nej og 1 for Ja ned i databasen....
Jeg går ud fra at du har lavet en checkbox for JA/Nej felterne?
De kan laves sådan: <input type=checkbox name=aflyst value=on>

i den fil som genner i databasen:

if Request.Form("Aflyst") = "" then
  aflyst = false 'eller 0
else
  aflyst = true 'eller 1
end if

strSQL = strSQL & "" & aflyst & "," ' Ja/Nej
Avatar billede Slettet bruger
14. april 2002 - 15:41 #40
Det har jeg lavet forkert. Det prøver jeg lige at rette.
Avatar billede Slettet bruger
14. april 2002 - 16:01 #41
TAK ... TAK ....

Det var en hård kamp. Så bare det at forhøje point og give jer noget for det gav problemer ;-)))

Tak skal I have.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester