Jo, det förstår jag. Men jag får ändå felmedelande.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in ORDER BY clause.
33 svar · 1 427 visningar · startad av parse · sida 2 av 2
Hej! Jag hämtar data ur e databas genom tre querystrings. Dvs, ?a=1&b=2&c=3 Då hämtas alla tre, men om man inte väljer med &b= får man ett felmeddelande. Hur gör jag så att man ska kunna välja vilka kombinationer som helst? tillexempel ?a=stockholm&c=d eller ?c=e&b=sverige osv osv
Läs frågan i sin helhet →Jo, det förstår jag. Men jag får ändå felmedelande.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in ORDER BY clause.
Då vill vi se hela koden som genererar SQL-frågan, och allra helst den färdiga SQL-frågan.
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("p.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM p WHERE title LIKE '%%" & Request.Form("sok") & "%%' AND c = '"& Request.Form("c") &"' AND s = '" & Request.Cookies ("s") & "' AND p BETWEEN " & CLng(Request.Form("f")) & " AND "& CLng(Request.Form("t")) &" "
If Len(Request.Form("y"))>0 Then
strSQL = strSQL & " AND y = " & CLng(Request.Form("y"))
End If
If Len(Request.Form("a"))>0 Then
strSQL = strSQL & " AND a = '" & SafeParam(Request.Form("a")) & "' ORDER BY id DESC"
End If
If Len(Request.Form("f"))>0 Then
strSQL = strSQL & " AND f = '" & SafeParam(Request.Form("f")) & "'"
End If
If Len(Request.Form("m"))>0 Then
strSQL = strSQL & " AND m = '" & SafeParam(Request.Form("m")) & "'"
End If
Order by ska vara sist. Kan det inte hända att du skickar f och / eller m om du skickar a?
Om du skriver ut SQL-frågan istället för att exekvera den är det lättare för dig att se vad som är fel.
@nders skrev:
Om du skriver ut SQL-frågan istället för att exekvera den är det lättare för dig att se vad som är fel.
Hur gör jag det?
response.write strSql
response.end
edit: det fanns visst ett inlägg på sida 2 också - vilket gör detta inlägg onödigt.
SELECT * FROM p WHERE title LIKE '%%%%' AND c = 'test' AND state = '1' AND p BETWEEN 10000000 AND 1 AND a = 1
Får felmedelande och inget kommer upp ifall jag har med ORDER BY.
edit: Missade sida 2.. :r
Är a en int? Har du valt rätt fält att ordna via?
SELECT * FROM p WHERE title LIKE '%%%%' AND c = 'test' AND state = '1' AND p BETWEEN 10000000 AND 1 AND a = 1 ORDER BY fält
Sasch skrev:
Är a en int? Har du valt rätt fält att ordna via?
SELECT * FROM p WHERE title LIKE '%%%%' AND c = 'test' AND state = '1' AND p BETWEEN 10000000 AND 1 AND a = 1 ORDER BY fält
A är number. Jag har ORDER BY id.
Får felmedelande och inget kommer upp ifall jag har med ORDER BY.
Då är jag intresserad av hur din kod ser ut när detta inträffar.
Det är otroligt skumt, nu får jag inget felmedelande alls, men det sorteras inte heller.
Jag tror de beror på att vi har 4st If Len längst ner som stryper order by?
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("p.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM p WHERE title LIKE '%%" & Request.Form("sok") & "%%' AND c = '"& Request.Form("c") &"' AND s = '" & Request.Cookies ("s") & "' AND p BETWEEN " & CLng(Request.Form("f")) & " AND "& CLng(Request.Form("t")) &" "
If Len(Request.Form("y"))>0 Then
strSQL = strSQL & " AND y = " & CLng(Request.Form("y"))
End If
If Len(Request.Form("a"))>0 Then
strSQL = strSQL & " AND a = '" & SafeParam(Request.Form("a")) & "' ORDER BY id DESC"
End If
If Len(Request.Form("f"))>0 Then
strSQL = strSQL & " AND f = '" & SafeParam(Request.Form("f")) & "'"
End If
If Len(Request.Form("m"))>0 Then
strSQL = strSQL & " AND m = '" & SafeParam(Request.Form("m")) & "'"
End If
Flytta ner:
If Len(Request.Form("a"))>0 Then
strSQL = strSQL & " AND a = '" & SafeParam(Request.Form("a")) & "' ORDER BY id DESC"
End If
eftersom ORDER BY skall komma efter WHERE, om du nu har a och m så kommer din SQL fråga bli fel.
Skriv ut din SQL fråga och postar den så får alla se hur SQL frågan ser ut när den genereras ut.