10. februar 2003 - 20:23Der er
33 kommentarer og 1 løsning
søge i access via asp
hejsa jeg er hel "grøn", (hvad det her angår hehe). Jeg har en access database med felt1, 2, 3, 4 osv. Det er nogle vare nr, tekst, salgspris, netto pris.
min ide var at folk på lokal netværket kunne spørge på databasen med asp. jeg har læst på html.dk (måske ikke nok), men kunne ikke lige finde helt ud af det. Jeg kan få fat i databasen, og bladre i den via asp, men ikke søge på den.
den skriver denne fejl Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1. /search.asp, line 35
Browsertype: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
koden er <% Response.Buffer = True %> <html><head> <title>Søgeresultat</title> </head><body>
<% ' 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("default.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE" strSQL = strSQL & " (felt1 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt2 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt3 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt4 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt5 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt6 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt7 LIKE '%" & strKeyword & "%')"
' Skaber DSNLess forbindelse til DBen strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kkk.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 "<p>Søgeresultat</p>" Response.Write "<table border=1>" Response.Write "<tr><th>felt1</th><th>felt2</th><th>felt3</th><th>felt4</th></tr>felt5</th></tr>felt6</th></tr>felt7</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("felt1") & "</td>" Response.Write "<td>" & rs("Adresse") & "</td>" Response.Write "<td>" & rs("Bynavn") & "</td>" Response.Write "<td>" & rs("Beskrivelse") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If
' Rydder op efter os myConn.Close Set myConn = Nothing %>
undskyld, undskyld, det var spdan den ser ud <% Response.Buffer = True %> <html><head> <title>Søgeresultat</title> </head><body>
<% ' 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("default.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE" strSQL = strSQL & " (felt1 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt2 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt3 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt4 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt5 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt6 LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (felt7 LIKE '%" & strKeyword & "%')"
' Skaber DSNLess forbindelse til DBen strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kkk.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 "<p>Søgeresultat</p>" Response.Write "<table border=1>" Response.Write "<tr><th>felt1</th><th>felt2</th><th>felt3</th><th>felt4</th></tr>felt5</th></tr>felt6</th></tr>felt7</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("felt1") & "</td>" Response.Write "<td>" & rs("felt2") & "</td>" Response.Write "<td>" & rs("felt3") & "</td>" Response.Write "<td>" & rs("felt4") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If
' Rydder op efter os myConn.Close Set myConn = Nothing %>
juhuu, jeg har løst det, men arg ja nu fik jeg et andet problem (du skal nok få point rune), når jeg spørger på et nr, kan jeg så begrænse hvor mange records den kommer med, da den søger på alt det er ligner det nr, (det skal den også), men skal kun komme med de 50 nærmeste
tør jeg spørge om en ting mere ?? 50 point ? Hvis jeh nu laver 2 boxe <body> var nr <form method="POST" action="search.asp"> <p><input type="text" name="Keyword" size="20"><br> <input type="submit" value="Søg" name="Action"></p> tekst <form method="POST" action="search.asp"> <p><input type="text" name="Keyword1" size="30"><br> <input type="submit" value="Søg" name="Action"></p> </form> </body> </html> <body>
hvordan får jeg den til at søge på keyword1??
i asp står der strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE" strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%')" strSQL = strSQL & " (felt2 LIKE '" & strKeyword1 & "%')" og så kræver det at der er indtastet i begge felter og det er ikke meningen
ja men så skriver den Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er gjort ugyldig brug af ".", "!" eller "()". i forespørgselsudtrykket "(felt1 LIKE '%') (felt2 LIKE 'leje%')". /search.asp, line 36
Browsertype: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
strKeyWord1 = Replace(Request.Form("Keyword1"), "'", "''") strSQL = "SELECT TOP 50 * FROM kkk1 WHERE" If strKeyWord <> "" Then strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%')" End If
If strKeyWord <> "" And strKeyWord1 <> "" Then strSQL = strSQL & " OR" End If
If strKeyWord1 <> "" Then strSQL = strSQL & " (felt2 LIKE '" & Request.Form("KeyWord1") & "%')" End If
nu har gjort som du sagde (skrev) og det virker fint hvis jeg taster noget i keyword1, men hvis jeg taster noget i keyword skriver den Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i WHERE-delsætningen. /search.asp, line 34
Browsertype: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
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.