Avatar billede jetkat Nybegynder
20. juni 2003 - 14:01 Der er 6 kommentarer og
1 løsning

Søgning på flere ord

Min søgestreng kan ikke finde Varenavnet "Grim langbenet hund" hvis jeg søger på "Grim hund"

Det vil jeg gerne kunne, jeg har på fornemmelsen det er "LIKE" som er problemet men kender ikke et alternativt udtryk.

"SELECT * FROM Produkter WHERE (Varenr LIKE '%::T1::%' OR Varenavn LIKE '%::T1::%' OR Detaljemenu LIKE '%::T1::%' OR Varebeskrivelse LIKE '%::T1::%' AND Webstatus =  'www') ORDER BY Detaljemenu ASC"
Avatar billede coltau Juniormester
20. juni 2003 - 14:46 #1
Søgeteksten "Grim hund" skal opdeles i 2 ord.

w1 = "Grim"
w2 = "hund"

"select * from produkter where varenavn like '%" & w1 & "%' and varenavn like '%" & w1 & "%'"

Ovenstående SQL-sætning vil finde varenavnet: "Grim langbenet hund"
Avatar billede jetkat Nybegynder
20. juni 2003 - 16:11 #2
Hvordan deler jeg de ord op som kommer fra mit formfelt T1 ?
Avatar billede jetkat Nybegynder
20. juni 2003 - 16:13 #3
<form method="POST" target="prodframe" action="searchprod.asp" name="FrontPage_Form1" onsubmit="return FrontPage_Form1_Validator(this)" language="JavaScript">
        <p align="center">
          <!--webbot bot="Validation" b-value-required="TRUE" i-minimum-length="1" --><input type="text" value="Søg produkt" onclick="this.value=''" name="T1" size="11" style="font-family: Verdana; font-size: 10 p
Avatar billede hossein Nybegynder
20. juni 2003 - 16:34 #4
Det er pricipet, problemet løses ved at danne et array af det indtastede ord(er). strKeywords er navnet på textboksen i formen:
If instr(strKeyWords, " ") <> 0 Then
aryStrKeyword = split(strKeyword, " ")

SQLQ = SQLQ & "(SELECT * FROM Produkter WHERE"
        For i = 0 To UBound(aryKeywords)
        SQLQ = SQLQ & "(" & _     
            "varenr LIKE '%" & aryKeywords(i) & "%' OR " & _
            "varenavn LIKE '%" & aryKeywords(i) & "%' OR " & _
            "Detaljemenu LIKE '%" & aryKeywords(i) & "%' OR " & _
            "Varebeskrivelse LIKE '%" & aryKeywords(i) & "%')"         
        Next
            SQLQ = SQLQ & ")"
end if
Avatar billede jetkat Nybegynder
21. juni 2003 - 02:15 #5
Jeg har prøvet at lege lidt med det men kan godt nok ikke lige få det til at virke, jeg er i tvivl om hvordan jeg får det passet ind i min ASP-side.
Avatar billede jetkat Nybegynder
25. juni 2003 - 02:55 #6
Jeg har forsøgt at få den integreret i denne: (Jeg giver gerne flere points hvis det kræves :-))
http://www.activeserverpages.dk/aspdigital/kapitel2/search.asp


<%
' Henter værdien fra soeg.htm
strKeywords = Trim(Request.Form("T1"))

' If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
'     Response.Clear
'    Response.Redirect("hovedmenu.asp")
' Else
    ' Hvis der er skrevet i feltet
'    strKeyword = Replace(strKeyword,"'","''")
' End If

' Opbygger en dynamisk SQL streng
' strSQL = "SELECT Varenr, Varenavn, Varebeskrivelse, Detaljemenu FROM Produkter WHERE"
' strSQL = strSQL & " (Varenr LIKE '%" & strKeyword & "%')"
' strSQL = strSQL & " OR (Varenavn LIKE '%" & strKeyword & "%')"
' strSQL = strSQL & " OR (Varebeskrivelse LIKE '%" & strKeyword & "%')"
' strSQL = strSQL & " OR (Detaljemenu LIKE '%" & strKeyword & "%')"

If instr(strKeyWords, " ") <> 0 Then
aryStrKeyword = split(strKeyword, " ")

SQLQ = SQLQ & "(SELECT * FROM Produkter WHERE"
        For i = 0 To UBound(aryKeywords)
        SQLQ = SQLQ & "(" & _     
            "varenr LIKE '%" & aryKeywords(i) & "%' OR " & _
            "varenavn LIKE '%" & aryKeywords(i) & "%' OR " & _
            "Detaljemenu LIKE '%" & aryKeywords(i) & "%' OR " & _
            "Varebeskrivelse LIKE '%" & aryKeywords(i) & "%')"         
        Next
            SQLQ = SQLQ & ")"
end if

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/hovedmenu.mdb")
Set myCon = Server.CreateObject("ADODB.Connection")
myCon.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myCon.Execute(SQLQ)
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>Navn</th><th>Adresse</th><th>By</th><th>Beskrivelse</th></tr>"
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("Varenr") & "</td>"
        Response.Write "<td>" & rs("Varenavn") & "</td>"
        Response.Write "<td>" & rs("Varebeskrivelse") & "</td>"
        Response.Write "<td>" & rs("Detaljemenu") & "</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
myCon.Close
Set myCon = Nothing
%>


Jeg får følgende fejl nå jeg prøver at søge:
Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'
Command text was not set for the command object.
/searchprod.asp, line 46

Line 46 er denne:
Set rs = myCon.Execute(SQLQ)
Avatar billede jetkat Nybegynder
01. juli 2003 - 09:31 #7
Har løst problemet på anden vis.
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