Avatar billede bobbedude Nybegynder
04. februar 2002 - 10:12 Der er 1 kommentar og
2 løsninger

Søgning med wildcard

Jeg har en Access database som jeg søger i:

<%
strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect("sorry.asp")
Else
strKeyword = Replace(strKeyword,"'","''")
End If
strSQL = "SELECT * FROM sleevs WHERE"
strSQL = strSQL & " (ordnum LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (job LIKE '%" & strKeyword & "%')"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("sleevs.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
%>

I databasen er der tekst som eks. 10% peberkorn.
Når jeg bruger Wildcard i min søgning %peber så knækker søgningen fordi den laver et eller andet når der er % tegn i teksten.
Hvad går jeg ??
Avatar billede bobbedude Nybegynder
04. februar 2002 - 10:58 #1
Arrg hvis jeg har et felt i ordnum som dette ( 10% korn ) kommr den simpelhen ikke med ud i resultatet.
Avatar billede coltau Juniormester
04. februar 2002 - 15:00 #2
Prøv at lege med kommandoen IN:

strSQL = "SELECT * FROM sleevs WHERE '10%' in ordnum"

Den virker som inStr og kan løse dit problem.
Avatar billede sth Novice
04. februar 2002 - 21:11 #3
jeg har selv en funktion, fundet et eller andet sted på nettet, den ser sådan ud, der er 2 filer
fil 1: search.htm
<html>

<head>

<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1352">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="default.css">
<class="lille">
<class="bgcol">
</head>


<title>Søgning</title>
</head>
<TABLE>
<TR>
    <TD><B>Søg på kunde data</B>
</TD>
</TR>
</TABLE><body>

<form method="POST" action="search.asp">
  <p><input type="text" name="Keyword" size="20"><br>
  <BR><BR>
  <input type="submit" value="Søg" name="Action" class="submitButton6"></p>
</form>
</body>
</html>

fil 2: search.asp

<!--#include file="protect.inc"-->
        <!--#include file="database_admin.inc"-->

<% Response.Buffer = True %>
<html><head>

<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1352">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="default.css">
<class="lille">
<class="bgcol">
</head>


<%
' 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 * FROM firma WHERE"
strSQL = strSQL & " (id LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_navn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_kontakt LIKE '%" & strKeyword & "%')"

strSQL = strSQL & " OR (firma_telefon LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_postnr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_city LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_hjemmeside LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_email LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_info_om LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_henviser_til LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_id LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_adresse LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (firma_fax LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen

'Response.Write strSQL
' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
     
  %>
  <table border="0" width="600" cellspacing="0" cellpadding="0" style="border: 1 solid #000000">
  <tr>
<td valign="middle" colspan="4" align="center" height="18"><font color="#FFFFFF"> <font face="Arial" size="3" color="#FFFFFF">Poster der blev fundet under søgningen</font></b></td>
  <tr>

 


   

  <tr>
  <td valign="top" align="left"><font face="Arial" size="2" color="#FFFFFF">&nbsp;Navn</td>
    <td valign="top" align="left"><font face="Arial" size="2" color="#FFFFFF">Kontakt</td>
    <td valign="top" align="left"><font face="Arial" size="2" color="#FFFFFF">Adresse</td>
    <td valign="top" align="left"><font face="Arial" size="2" color="#FFFFFF">&nbsp;E-mail</td>

 
      <%
Do While Not rs.EOF

   
      id = rs("ID")
    navn = rs("firma_navn")
    telefon = rs("firma_telefon")
        adresse = rs("firma_adresse")
                kontakt = rs("firma_kontakt")

                email = rs("firma_email")


      %>
 
  <tr>
 
   
  <td valign="top" align="left" ><a href="vis_data_alt.asp?id=<%=id%>">&nbsp;<%=navn%></b></td>
    <td align="left" valign="top"  ><%=kontakt%></td>
    <td valign="top" align="left" ><%=adresse%></a></td>
        <td valign="top" align="left"  ><a href="mailto:<%=email%>">&nbsp;<%=email%></a></td>
      <%




    rs.MoveNext
  LOOP
  RS.Close
  Response.Write "</TABLE>"



Denne virker ALTID for mig jeg har lige testet det med et felt hvor jeg havde skrevet peber og hvor jeg havde skrevet 10% peber, og det virkede
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