18. september 2003 - 12:56Der er
26 kommentarer og 1 løsning
fejl i søgefunktion
jeg får denne fejl i søgefunktion:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/ic/soeg.asp, line 32 ----- linie 32 ser sådan ud : Set rs = myConn.Execute(strSQL)
og er en del af denne søgefunktion:
<% ' Henter værdien fra soeg.htm strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("velkommen.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT Nr, Beskrivelse FROM varer where " strSQL = strSQL & " (Nr LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"
' Skaber DSNLess forbindelse til DBen strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data/prisbog.mdb") Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN
' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen response.write "<form NAME='itemsform'>" Do While Not rs.EOF %>
nu får jeg denne fejl : Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgselsudtrykket "(Nr LIKE %GLAS%) OR (Betegnelse LIKE '%GLAS%')". /soeg.asp, line 31
ændrer du det til tekst vil det script du postede højst sandsynligt virke - til gengæld vil du ikke kunne sortere feltet på samme måde som et rigtigt tal-felt.
Vil du beholde det som et talfelt så prøv engang noget a la dette;
strSQL = "SELECT Nr, Beskrivelse FROM varer where " If isnumeric(strKeyword) = true Then strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%)" End If strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"
strSQL = "SELECT Nr, Beskrivelse FROM varer where " If isnumeric(strKeyword) = true Then strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%) OR " End If strSQL = strSQL & " (Betegnelse LIKE '%" & strKeyword & "%')"
ok jeg har forenklet det lidt : --- <% Response.Buffer = True %> <html><head> <title>Søgeresultat</title> </head><body link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" bgcolor="#50639B"> <h2 align="center"><font color="#FFFFFF">Søgeresultat på <% = request.form ("keyword") %></font></h2> <% ' Henter værdien fra soeg.htm strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("velkommen_til_shop.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT Nr, Beskrivelse FROM varer where " strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%)" strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"
' Skaber DSNLess forbindelse til DBen strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data/icl-prisbog.mdb") Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN
' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF %> <% response.write rs("beskrivelse")%> <% rs.MoveNext Loop%> <% ' Rydder op efter os myConn.Close Set myConn = Nothing end if %> </html>
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgselsudtrykket "(Nr LIKE %gl%) OR (Betegnelse LIKE '%gl%')".
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1. /soeg.asp, line 32
Browsertype: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Side: POST 68 bytes to /soeg.asp
POST Data: soeg=S%F8g+efter%26nbsp%3Bvare+%3CBR%3Eeller+varenummer&Keyword=glas
der er en ting jeg ikke helt forstår... til at starte med fik du fejl i linie 32 - så puttede jeg 2 ekstra linier ind på linie 21 + 32 så derfor burde din fejl være flyttet 2 pladser ned til linie 34, men du får stadig fejlen i linie 32???
fjerne de tre linier med strSQL - og indsæt i stedet;
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.