Avatar billede danskeb Nybegynder
10. april 2002 - 09:26 Der er 3 kommentarer og
1 løsning

Præcis søgning

Jeg bruger dette script når jeg søger i min database (ms access 2000)

lad os sige at databasen indeholder posterne:
10000
20000
30000

Det er de eneste der kan søges på, men søger jeg på feks. 1 lister den alle poster begyndende med 1

Hvordan kan jeg undgå det ?
Der må kunne laves en form for præcis søgning.
Her er koden:

<%
' 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("search.htm")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, usg, type, status, dato FROM personer WHERE"
strSQL = strSQL & " (usg LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (type LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (status LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/database.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><strong>Resultat af søgning.</p></strong>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>USG nummer</th><th>Reparations model</th><th>Reparations start dato<th>Reparations status</th><th>"
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("usg") & "</td>"
        Response.Write "<td>" & rs("type") & "</td>"
        Response.Write "<td>" & rs("dato") & "</td>"
        Response.Write "<td><strong>" & rs("status") & "</td></strong></tr>"

        rs.MoveNext
    Loop
    Response.Write "</table>"
   
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p><font color=red><strong>Dette USG nummer er ikke registreret hos os, måske har vi endnu ikke indtastet din reparation.</p>"
    Response.Write "<p><font color=red><strong>Prøv venligst igen senere.</p>"

End If

' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>
Avatar billede Søren Bech Morsing Praktikant
10. april 2002 - 09:28 #1
fjern LIKE % dit ord %

% tegn = wildcard i SQL
Avatar billede Søren Bech Morsing Praktikant
10. april 2002 - 09:28 #2
strSQL = "SELECT ID, usg, type, status, dato FROM personer WHERE"
strSQL = strSQL & " (usg LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (type LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (status LIKE '" & strKeyword & "')"
Avatar billede danskeb Nybegynder
10. april 2002 - 09:32 #3
jeg prøver lige
Avatar billede danskeb Nybegynder
10. april 2002 - 09:34 #4
Jeps, det var jo lige det, tak for hjælpen
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