Avatar billede danskebanner Nybegynder
17. september 2002 - 11:38 Der er 3 kommentarer og
2 løsninger

Søge med wildcard ?

Er det muligt i sin søgeform at benytte wildcard eller lignende?

Feks:

Hvis jeg har en bruger der hedder: Jan Jespersen
kræver det jeg skriver hele navnet men jeg kunne godt tænke mig det feks var nok at skrive:

Jan Je* eller bare Jan je

Hvis der så er flere skal den selvfølgelig liste alle der passer på søgningen.

Her er den stump kode jeg bruger i søgeformen:



<%


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

' Opbygger en dynamisk SQL streng
strSQL = "SELECT TOP 1 ID, nummer, forhandlernavn, forhandleradr, forhandlerpostnr, forhandlerby, forhandlertele, kundenavn, kundeadr, kundepostnr, kundeby, kundetele, kundeemail, type, kundeudstyr, dato, kundefejl, kunderep, kundepris, status, datoslut, policenr, password, retur FROM usgdatabase WHERE"
strSQL = strSQL & " (nummer LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (forhandlernavn LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (forhandleradr LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (policenr LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (forhandlerby LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (forhandlertele LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundenavn LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundeadr LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundepostnr LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundeby LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundetele LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundeemail LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (type LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundeudstyr LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (dato LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (kundefejl LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (datoslut LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (policenr LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (password LIKE '" & strKeyword & "')"
strSQL = strSQL & " OR (retur LIKE '" & strKeyword & "')"
strSQL = strSQL & " ORDER BY ID DESC"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\websider\global\comgrosinfo.dk\comgrosinfo.dk\db\usgdatabase.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

%>

100 points for et brugbart svar.
Avatar billede lange Nybegynder
17. september 2002 - 11:42 #1
Ja, når du anvender LIKE er det muligt at bruge wildcards (i modsætning til når du bruger = ). Wildcards:

% matcher ingen eller flere vilkårlige characters (den du kalder *)
_ matcher een enkelt vilkårlig character
Avatar billede medions Nybegynder
17. september 2002 - 11:42 #2
Avatar billede danskebanner Nybegynder
17. september 2002 - 11:48 #3
Ja det virker med % istedet for * men den lister kun den sidst indtastede (måske det har noget med SELECT TOP 1 ID at gøre)

Løsning på hvad jeg kan gøre ?
Avatar billede lange Nybegynder
17. september 2002 - 11:50 #4
Ja, det kunne det have noget med at gøre, da "SELECT TOP 1" betyder "vælg kun den første". Prøv istedet med "SELECT ID FROM" og husk at lave en løkke, der iterer over alle forekomster, der hvor du outputter dine data.
Avatar billede medions Nybegynder
20. september 2002 - 13:36 #5
Thx 4 Poinz

//>Rune
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