Avatar billede termie Nybegynder
25. november 2001 - 17:14 Der er 11 kommentarer og
2 løsninger

SQL update syntax error hjælp

Jeg får en syntax error fejl i følgende sql linie:

Set Conn = Server.CreateObject(\"ADODB.Connection\")
      Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"../log/test.mdb\")
      SQLstmt = \"UPDATE navn FROM member SET navn= \'\" & FileName & \"\' WHERE memberID = \'\" & Request.querystring(\"id\") & \"\' \"
      Set rs = conn.Execute(SQLstmt)
      Set rs = Nothing

member er et tabelnavn,
memberID, navn er kolonnenavne

Følgende fejl fås:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.
/mmecd/nyhed/upload.asp, line 54


hjææææææææælp
Avatar billede eagleeye Praktikant
25. november 2001 - 17:17 #1
SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID = \'\" & Request.querystring(\"id\") & \"\' \"

hvis memberID er defineret som tal i databasen:
SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID = \" & Request.querystring(\"id\")
Avatar billede bjarke-b Nybegynder
25. november 2001 - 17:17 #2
SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID = \'\" & Request.querystring(\"id\") & \"\' \"
Avatar billede termie Nybegynder
25. november 2001 - 17:20 #3
fejlen bliver nu:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/mmecd/nyhed/upload.asp, line 54
Avatar billede eagleeye Praktikant
25. november 2001 - 17:22 #4
hvis memberID er defineret som tal i databasen:
SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID = \" & Request.querystring(\"id\")
Avatar billede mathiasiversen Nybegynder
25. november 2001 - 17:23 #5
prøv lige at sige response.write(SQLstmt) istedet for Set rs = conn.Execute(SQLstmt) og skriv hvad du får ud!

/Mathias
Avatar billede termie Nybegynder
25. november 2001 - 17:26 #6
til eagleeye:

fejlen bliver nu:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression \'memberID = \'\'.
Avatar billede eagleeye Praktikant
25. november 2001 - 17:28 #7
det kunne tyde på at  Request.querystring(\"id\")  er tom = \"\"

linket i browseren skal være dinfil.asp?id=43  (eks med 43)
Avatar billede termie Nybegynder
25. november 2001 - 17:28 #8
til mathiasiversen:

Ingen fejl den kører den response.redirect der ligger i slutningen
Avatar billede mathiasiversen Nybegynder
25. november 2001 - 17:33 #9
så prøv lige at sætte et \' foran så den ikke går videre - jeg vil gerne lige vide hvad du får når du skriver det jeg skrev - så er det nemmere at se hvad fejlen evt. måtte være!

prøv også evt. bare at skrive request istedet for request.querystring

/Mathias
Avatar billede termie Nybegynder
25. november 2001 - 20:02 #10
til eagleeye:

skal den sætning du foreslår i indlægget 25/11 2001 17:17:07  ikke afsluttes som bjarke-b foreslår??
Avatar billede eagleeye Praktikant
25. november 2001 - 22:18 #11
Det kommer an på hvilken data type memberID er defineret som i databasen.

Når man bruger tal i SQL skal der ikke \' omrking data. Det er kun ved kolonner som er defineret som tekst.

Eks:
SQLstmt = \"UPDATE member SET tekstFelt= \'HEJ\', talFelt=102938 WHERE memberID = 10\"  \'Antager memberID er defineret som tal

Hvis memberID er defineret som tal skal der så 10 hvis memberID er defineret som teskt skal der stå \'10\'.
Avatar billede eagleeye Praktikant
25. november 2001 - 22:19 #12
Så hvis memberID er defineret som tekst i databasen:
SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID = \'\" & Request.querystring(\"id\") & \"\'\"


Og hvis memberID er defineret som tal i databasen:
SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID = \" & Request.querystring(\"id\")
Avatar billede termie Nybegynder
26. november 2001 - 21:19 #13
Sætningen der fungerere hedder:

SQLstmt = \"UPDATE member SET navn= \'\" & FileName & \"\' WHERE memberID =  \" & RS(\"memberID\") & \" \"

Jeg har skiftet reguest.querystring ud med RS(\"memberID\") de er begge nummeriske i DB. Udskiftningen af querystrengen er inspireret af eagleeye og mathiasiversen så jeg fordelerer point lidt. Tusind tak for hjælpen /termie
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