Avatar billede radda Nybegynder
06. september 2004 - 17:26 Der er 52 kommentarer og
2 løsninger

søgefunktion med flere ord i flere kolonner

Hej alle

Jeg har kigge mig lidt omkring, men har ikke lige fundet det som jeg søger! efter.

Jeg vil meget gerne have, at man kunne søge på flere ord og ikke bare det ene, som det er tilfældet nu. Altså jeg kan søge på børn, hvilket giver resultat, men ikke på børn lege, da denne tekst streng ikke optræder samme nogetsteds. Det er selvfølgelig noget med at dele søgestrenge i to og lade den søge på disse, men jeg har ikke helt kunne gennemskue koden. Her er min kode, som virker fint nu, men som altså mangler lige det sidste.

Håber meget på lidt hjælp!

<%
strSearch = fjerntegn(Request.Form("search"))

If strSearch <> "" Then
   

    SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' AND INSTR(foredrag.beskrivelse,'" & strSearch & "') OR INSTR(foredrag.titel,'" & strSearch & "') OR INSTR(foredrag.undertitel,'" & strSearch & "') OR INSTR(foredrag.sogeord,'" & strSearch & "') OR INSTR(foredrag.foredragsholder,'" & strSearch & "') ORDER BY foredrag.titel"

    set rs=conn.execute(SQL)
   
    If rs.Eof Then
  Response.Write "Søgningen efter <b>" & lavtegn((strSearch)) & "</b> gav intet resultat"
Else
if rs("vis") = "ja" then
Response.Write "Søgningen efter '<b>" & lavtegn((strSearch)) & "</b>' gav følgende resultater:<br><br>"
end if

Do Until RS.EOF

bla bla

RS.MoveNext
LOOP
%>
Avatar billede Jman Praktikant
06. september 2004 - 17:30 #1
Avatar billede radda Nybegynder
06. september 2004 - 17:47 #2
Hmm

Det virker ikke helt: jeg har prøvet med sql sætningen:

SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' AND INSTR(foredrag.beskrivelse LIKE '" & strSearch & "') ...

Fejler med: Procedurekaldet er ugyldigt
Avatar billede jpvj Nybegynder
06. september 2004 - 17:48 #3
Du skal splitte din søgestreng op efter mellemrum.

Dette gøres med Split() funktionen der returnerer et array af strings.

Herefter laver du en løkke der for hver streng i arrayet, lægger hvert søgeord til dit dit SQL query:

If strSearch <> "" then

  SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' "

  Dim arrSearch() as Array
  Dim i as Integer
  Dim strSearchLike as String
  strSearchLike = " AND ("
  arrSearch = Split(strSearch, " ")
  for i=LBound(arrSearch) to UBound(arrSearch) do
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') OR " & _
    strSearchLike = strSearchLike & " (foredrag.titel LIKE '%" & arrSearch(i) & "%') OR " & _
    strSearchLike = strSearchLike & " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') OR " & _
    strSearchLike = strSearchLike & " (foredrag.soegeord LIKE '%" & arrSearch(i) & "%') OR " & _
    strSearchLike = strSearchLike & " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%') OR "
  next i
 
  ' fjern sidste " OR " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"
else
  ' Giv evt en eller anden fejl om tom søgestreng...
end if



SQL = SQL & strSearchLike & " ORDER BY foredrag.titel"
Avatar billede jpvj Nybegynder
06. september 2004 - 17:51 #4
Du misforstår lidt INSTR/LIKE

INSTR er en funktion, der kan fortælle om en streng findes inden i en anden (returnerer muligvis et tal - se SQL dokumentationen).

LIKE benytte i WHERE clause'en til at lave en "ligner":

Ex.

WHERE navn LIKE "%Peter"

betyder at feltet navn, skal starte med Peter (% = et vilkårligt antal karakterer).

WHERE navn LIKE "%Peter%"
betyder at feltet navn, skal indeholde med Peter (ex. "Petersen", "Jens-Peter Jensen", "Hans Peter")

Det er mest normalt, at anvende LIKE. Jeg har aldrig set/brug INSTR selv.
Avatar billede radda Nybegynder
06. september 2004 - 17:54 #5
jpvj:

ok med INSTR/LIKE - det forstår jeg nu - takker:

mht koden - den fejler med:

Slut på sætning var ventet
/mainsite/search.asp, line 3, column 16
Dim arrSearch() as Array

jeg er ikke så skarp til dette, så jeg er meget glad for hjælpen
Avatar billede jpvj Nybegynder
06. september 2004 - 17:55 #6
Min kode leder efter et søgeord vilkårligt, dvs. "hans action" vil kunne finde et foredrag med foredragsholderen "Hans Hansen" og titlen "Et actiondrama...".

Hvis du vil kræve, at alle ord i søgestrengen skal indgå i ex. titel, skal strengen omskrives, så du grupperer alle ((foredrag.titel LIKE ...) OR ((foredrag.titel LIKE ...)) i en gruppe for sig og AND'er dette med ((foredrag.beskrivelse LIKE ....) OR (foredrag.beskrivelse LIKE ...)) AND osv.
Avatar billede jpvj Nybegynder
06. september 2004 - 17:56 #7
Prøv at rette det til

Dim arrSearch()

Jeg har ikke lige kodet ASP på det sidste :-)
Avatar billede radda Nybegynder
06. september 2004 - 17:58 #8
fint:

nu fejler:

for i=LBound(arrSearch) to UBound(arrSearch) do
Avatar billede jpvj Nybegynder
06. september 2004 - 18:00 #9
Hvilken fejl?
Avatar billede jpvj Nybegynder
06. september 2004 - 18:01 #10
oh sorry - fjern "do"
Avatar billede radda Nybegynder
06. september 2004 - 18:02 #11
ja ja - vi skal nok nå frem til noget ...

nu fejler:
Slut på sætning var ventet
/mainsite/search.asp, line 30, column 5
next i
Avatar billede radda Nybegynder
06. september 2004 - 18:05 #12
hvis jeg fjerner i
Avatar billede radda Nybegynder
06. september 2004 - 18:05 #13
hvis jeg fjerner i

så kommer:

Navnet er omdefineret
/mainsite/search.asp, line 19, column 4
Dim arrSearch()
Avatar billede jpvj Nybegynder
06. september 2004 - 18:09 #14
Ja next skal ikke efterfølges af variable navnet

skriv evt.

Next ' i

for at angive at det er i du looper over...

Hvilken linie er 19??
Avatar billede radda Nybegynder
06. september 2004 - 18:10 #15
Dim arrSearch()
Avatar billede jpvj Nybegynder
06. september 2004 - 18:16 #16
5 min - jeg smider det lige på en IIS server og får det til at fungere...
Avatar billede jpvj Nybegynder
06. september 2004 - 18:18 #17
Denne her virker - så må vi se om det giver det rigtige resultat fra databasen...

  If strSearch <> "" then

  SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' "

  Dim arrSearch, i, strSearchLike
  strSearchLike = " AND ("
  arrSearch = Split(strSearch, " ")
  for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.titel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.soegeord LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%') OR "
  next ' i
 
  ' fjern sidste " OR " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"
else
  ' Giv evt en eller anden fejl om tom søgestreng...
end if



SQL = SQL & strSearchLike & " ORDER BY foredrag.titel"
Avatar billede radda Nybegynder
06. september 2004 - 18:26 #18
Jeg får dog:

Navnet er omdefineret
mainsite/search.asp, line 17, column 4
Dim arrSearch, i, strSearchLike

Og linje 17 er: Dim arrSearch, i, strSearchLike
Avatar billede jpvj Nybegynder
06. september 2004 - 18:27 #19
Kontroller, at arrSearch (og evt. i og strSearchLike) ikke er defineret tidligere i koden.

Det ser ud som om, at du har

Dim arrSearch

stående tidligere...
Avatar billede radda Nybegynder
06. september 2004 - 18:30 #20
Det har jeg ikke - her er det hele:

<!-- #include file="include/tegn.asp"-->
<!-- #include file="include/backglobal.asp"-->


<FORM ACTION='default.asp?p_id=2&s_id=3' METHOD='POST'>
<INPUT TYPE='TEXT' NAME='search'>
<INPUT TYPE='SUBMIT' VALUE='Søg'>
</FORM>

<%
strSearch = fjerntegn(Request.Form("search"))

If strSearch <> "" then

  SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' "

  Dim arrSearch, i, strSearchLike
  strSearchLike = " AND ("
  arrSearch = Split(strSearch, " ")
  for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.titel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.soegeord LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%') OR "
  next ' i
 
  ' fjern sidste " OR " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"
else
  ' Giv evt en eller anden fejl om tom søgestreng...
end if



SQL = SQL & strSearchLike & " ORDER BY foredrag.titel"

    'SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' AND (foredrag.beskrivelse LIKE '" & strSearch & "') OR INSTR(foredrag.titel,'" & strSearch & "') OR INSTR(foredrag.undertitel,'" & strSearch & "') OR INSTR(foredrag.sogeord,'" & strSearch & "') OR INSTR(foredrag.foredragsholder,'" & strSearch & "') ORDER BY foredrag.titel"

    set rs=conn.execute(SQL)
   
If rs.Eof Then
  Response.Write "Søgningen efter <b>" & lavtegn((strSearch)) & "</b> gav intet resultat"
Else if rs("vis") = "ja" then
        Response.Write "Søgningen efter '<b>" & lavtegn((strSearch)) & "</b>' gav følgende resultater:<br><br>"
        end if


    Do Until RS.EOF
    if rs("vis") = "ja" then
        'If Len(strSearch) >= 1 AND LCase(strSearch) = LCase(RS("titel")) Then
            %>
            <table border="0" cellspacing="1" cellpadding="3" width="303">
           
            <tr class="nyhedtekst"><td><a href="default.asp?p_id=6&foredrag=<%=rs("id")%>&search=<%=lavtegn(strSearch)%>"><%=lavtegn(rs("titel"))%></a><br> - <i><%=lavtegn(rs("undertitel"))%></i></td></tr>
            </table>
            <%
                       
        'End If
        end if
   
        RS.MoveNext
    LOOP
   
    RS.Close
    End If
%>
Avatar billede jpvj Nybegynder
06. september 2004 - 18:39 #21
Kunne den være defineret her?

<!-- #include file="include/tegn.asp"-->
<!-- #include file="include/backglobal.asp"-->
Avatar billede jpvj Nybegynder
06. september 2004 - 18:41 #22
Dit eks. virker her (naturligvis uden de 2 includes)

OK - find først ud af, hvilken variable, der bliver omdefineret:

  Dim arrSearch, i, strSearchLike

ændres til

  Dim arrSearch
  Dim i
  Dim strSearchLike

Se hvilken linie, der fejler.

Omdøb evt. blot variablen, ex.
  Dim arrSearchStr

og skift den alle steder i koden...
Avatar billede radda Nybegynder
06. september 2004 - 18:44 #23
næ - det eneste sted i hele sitet, hvor jeg bruger arrSearch er her! Jeg har lige lavet en søgning(!)

Den fejler med:
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0411)
Navnet er omdefineret
/mainsite/search.asp, line 17, column 4
Dim arrSearch
Avatar billede radda Nybegynder
06. september 2004 - 18:45 #24
Begge dele har jeg prøvet. Stadig:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0411)
Navnet er omdefineret
/mainsite/search.asp, line 17, column 4
Dim arrSearchStr
Avatar billede jpvj Nybegynder
06. september 2004 - 18:47 #25
Sidder du med Visual Interdev?

Hvilken IIS?
Avatar billede jpvj Nybegynder
06. september 2004 - 18:47 #26
prøv lige at udkommentere dine DIM sætninger...
Avatar billede jpvj Nybegynder
06. september 2004 - 18:54 #27
Du kan være 100% sikker på, at variablen bliver redifineret...

Hvor det sker er lidt svært at sige, men det er helt sikkert i en include fil (enten en af de 2 du har angivet, eller i en fil som dit udviklingsværktøj kan pille i).

Summa sumarum: De behøves ikke at blive deklareret - jeg synes bare det er pænt, og bruger det altid sammen med Option Explicit.
Avatar billede radda Nybegynder
06. september 2004 - 18:55 #28
jeg er temmelig sikker på at det nu er et spg om mine if/end if - den fejler ret kraftigt - men jeg kan se at det er fordi, at den ikke får en strSearch med... derfor får den kun halvdelen af sql'en

If strSearch <> "" then

  SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' "

  Dim arrSearch, i, strSearchLike
  strSearchLike = " AND ("
  arrSearch = Split(strSearch, " ")
  for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.titel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.soegeord LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%') OR "
  next ' i
 
  ' fjern sidste " OR " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"
else
  ' Giv evt en eller anden fejl om tom søgestreng...
end if



SQL = SQL & strSearchLike & " ORDER BY foredrag.titel"

men jeg er nødt til lige at smutte lidt - vender tilbage senere på aftenen
Avatar billede jpvj Nybegynder
06. september 2004 - 18:57 #29
Udskriv din SQL til sidst, dvs. lige før dit databasekald

Respone.Write("<P>SQL query: " & SQL & "</P>)
Avatar billede jpvj Nybegynder
06. september 2004 - 18:58 #30
OK - jeg vil også smutte hjem fra arb... nu er det vist blevet sent nok :-)
Avatar billede radda Nybegynder
06. september 2004 - 23:07 #31
jeg er der næsten:

Dette er koden:

SQL = "SELECT * FROM foredrag WHERE foredrag.vis='ja' "

  'Dim arrSearch, i, strSearchLike
  strSearchLike = " AND ("
  arrSearch = Split(strSearch, " ")
  for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.titel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.sogeord LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%') OR "
  next ' i
 
  ' fjern sidste " OR " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"




SQL = SQL & strSearchLike & " ORDER BY foredrag.titel"
    set rs=conn.execute(SQL)
   
    response.write "SQl: " + sql


Og her er sql'en:

SQl: SELECT * FROM foredrag WHERE foredrag.vis='ja' AND ( (foredrag.beskrivelse LIKE '%velplejet%') OR (foredrag.titel LIKE '%velplejet%') OR (foredrag.undertitel LIKE '%velplejet%') OR (foredrag.sogeord LIKE '%velplejet%') OR (foredrag.foredragsholder LIKE '%velplejet%') OR (foredrag.beskrivelse LIKE '%%') OR (foredrag.titel LIKE '%%') OR (foredrag.undertitel LIKE '%%') OR (foredrag.sogeord LIKE '%%') OR (foredrag.foredragsholder LIKE '%%') ) ORDER BY foredrag.titel

Som der fremgår strSearchLike  skrevet to gange, og sidste gang uden arrSearch, og derfor returnere den alle poster i db.

Jeg tror den er gal med: strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"

men er ikke sikker... hvad mener du jpvj?
Avatar billede jpvj Nybegynder
07. september 2004 - 09:58 #32
strSeachLike er med 2 gange, fordi array'et, der returneres af split(), indeholder 2 elementer, hvor det sidste er den tomme streng....
Det virker mærkeligt at du får et tomt element i dit array...

Kan du ikke lige prøve at udskrive følgende:

Response.Write("*" & strSearch & "*")

efter arrSearch = Split(strSearch, " ")
Response.Write("LBound(strSearch): " & LBound(strSearch) & "  UBound(strSearch): " & UBound(strSearch))


Du kunne også prøve følgende
Avatar billede jpvj Nybegynder
07. september 2004 - 09:58 #33
Glem sidste linie...
Avatar billede radda Nybegynder
07. september 2004 - 10:11 #34
hej igen

Response.Write("*" & strSearch & "*") giver: *test*

Response.Write ("LBound(arrSearch): " & LBound(arrSearch) & "  UBound(arrSearch): " & UBound(arrSearch)) giver: LBound(arrSearch): 0 UBound(arrSearch): 0
Avatar billede jpvj Nybegynder
07. september 2004 - 10:13 #35
That's weird :-)

... tænker lige...
Avatar billede radda Nybegynder
07. september 2004 - 10:19 #36
på denne søgning er sql'en:

SQl: SELECT * FROM foredrag WHERE foredrag.vis='ja' AND ( (foredrag.beskrivelse LIKE '%test%') OR (foredrag.titel LIKE '%test%') OR (foredrag.undertitel LIKE '%test%') OR (foredrag.sogeord LIKE '%test%') OR (foredrag.foredragsholder LIKE '%test%') OR (foredrag.beskrivelse LIKE '%redskab%') OR (foredrag.titel LIKE '%redskab%') OR (foredrag.undertitel LIKE '%redskab%') OR (foredrag.sogeord LIKE '%redskab%') OR (foredrag.foredragsholder LIKE '%redskab%') ) ORDER BY foredrag.titelLBound
Avatar billede jpvj Nybegynder
07. september 2004 - 11:01 #37
Hvilken søgning?

Jeg antager at det er "test redskab"
Avatar billede jpvj Nybegynder
07. september 2004 - 11:02 #38
strSearchLike = Left(strSearchLike, len(strSearchLike) - 3) & ")"

er ok, men kunne godt blive ændret til

strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & ")"

så fjerner den et unødvendig mellemrum mellem de to sidste parenteser.
Avatar billede jpvj Nybegynder
07. september 2004 - 11:31 #39
OK - smid denne kode in i toppen - lige når du har fået fat i strSearch...

  ' fjern evt. mellemrum i start/slutning
  strSearch = trim(strSearch)

  ' skift alle dobbelt mellemrum til enkelte
  do while instr(strSearch, "  ") > 0
    strSearch = replace(strSearch, "  ", " ")
  loop
Avatar billede radda Nybegynder
07. september 2004 - 15:58 #40
Altså - jeg er meget i tvivl om hvad der sker lige nu ... har prøvet at gennemskue, men ak.

På en søgning efter test og redskab, får jeg resultater tilbage med alle foredrag, som indeholder ENTEN test ELLER redskab.
Jeg vil selvfølgelig gerne have de resultater, som indeholder BÅDE test OG redskab tilbage.

Er dette muligt og er vi enige om at det er målet?

Jeg er ellers meget glad for hjælpen

Rasmus
Avatar billede jpvj Nybegynder
07. september 2004 - 16:47 #41
Jamen det fikser vi da bare :-)

Du får i øvrig ikke ENTEN/ELLER, men kun ELLER lige nu :-)

Jeg skal bare høre:

Skal ordene indgå i samme felt, dvs. titel skal indeholde både test OG redskab, eller er det også i orden, at ex. titel indeholder test og foredrag indeholder redskab?
Avatar billede jpvj Nybegynder
07. september 2004 - 16:48 #42
Hvis det er ligemeget hvor ordene står (dvs. alle ord skal optrædet et eller andet vilkårligt sted i dine felter), så kan du bruge:

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') OR " & _
    " ((foredrag.titel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.sogeord LIKE '%" & arrSearch(i) & "%') OR " & _
    " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%')) AND "
  next ' i
 
  ' fjern sidste " AND " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & ")"
Avatar billede jpvj Nybegynder
07. september 2004 - 16:51 #43
Ups... ret 4 til 5 i sidste linie for at fjerne det overflødige mellemrum..
Avatar billede radda Nybegynder
07. september 2004 - 16:53 #44
det virker ikke - den returnerer både de resultater med test og redskab - men ikke kun det foredrag, hvor begge søgeord optræder:

SQl: SELECT * FROM foredrag WHERE foredrag.vis='ja' AND ( (foredrag.beskrivelse LIKE '%test%') OR ((foredrag.titel LIKE '%test%') OR (foredrag.undertitel LIKE '%test%') OR (foredrag.sogeord LIKE '%test%') OR (foredrag.foredragsholder LIKE '%test%')) AND (foredrag.beskrivelse LIKE '%redskab%') OR ((foredrag.titel LIKE '%redskab%') OR (foredrag.undertitel LIKE '%redskab%') OR (foredrag.sogeord LIKE '%redskab%') OR (foredrag.foredragsholder LIKE '%redskab%')) ) ORDER BY foredrag.titel
Avatar billede jpvj Nybegynder
07. september 2004 - 16:57 #45
OK - dvs. du vil have en løsning, hvor begge (alle) ord skal optræde samtidig i ex. titel?
Avatar billede jpvj Nybegynder
07. september 2004 - 16:58 #46
Prøv denne kode - den er bare lige klasket sammen, så det er ikke sikkert at den overhovedet kan køre.. :-)

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') AND "
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " ((foredrag.titel LIKE '%" & arrSearch(i) & "%') AND " & _
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "


for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') AND " & _
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.sogeord LIKE '%" & arrSearch(i) & "%') AND " & _
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%')) AND "
next ' i
' fjern sidste "AND " fra søgestreng
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4)
Avatar billede jpvj Nybegynder
07. september 2004 - 17:00 #47
Sidste linie skal lige rettes med en manglende parentes:

' fjern sidste "AND " fra søgestreng og tilføj ")"
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & ")"
Avatar billede jpvj Nybegynder
07. september 2004 - 17:07 #48
OK - den var ikke helt ren i kanten...

Nedenstående skulle give det korrekte SQL output...

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.beskrivelse LIKE '%" & arrSearch(i) & "%') AND "
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.titel LIKE '%" & arrSearch(i) & "%') AND "
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "


for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.undertitel LIKE '%" & arrSearch(i) & "%') AND "
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.sogeord LIKE '%" & arrSearch(i) & "%') AND "
next ' i
' fjern sidste "AND " fra søgestreng og læg "OR" til
strSearchLike = Left(strSearchLike, len(strSearchLike) - 4) & "OR "

for i=LBound(arrSearch) to UBound(arrSearch)
    strSearchLike = strSearchLike & " (foredrag.foredragsholder LIKE '%" & arrSearch(i) & "%') AND "
next ' i
 
  ' fjern sidste " AND " fra søgestreng og afslut med ")"
  strSearchLike = Left(strSearchLike, len(strSearchLike) - 5) & ")"
Avatar billede jpvj Nybegynder
07. september 2004 - 17:08 #49
Ovenstående kan pakkes meget pænere sammen i en dobbelt løkke, der ud fra et array med feltnavne genererer SQL sætningen, men det må vist blive et andet spm :-)
Avatar billede jpvj Nybegynder
07. september 2004 - 17:16 #50
Smutter hjem fra arb. nu - jeg følger op i morgen.
Avatar billede radda Nybegynder
07. september 2004 - 17:16 #51
JAAAAAAAAAAAAAAAAAAAAAAAAAAAA DAAAAAAAAAAAAAAAAAAAAAAAaa
Avatar billede radda Nybegynder
07. september 2004 - 17:17 #52
tak for det - du har virkelig fortjent de point - dem har du vist fået (dog på et forkert svar)

Jeg er meget glad for hjælpen. Endnu engang takker

Rasmus
Avatar billede radda Nybegynder
07. september 2004 - 17:46 #53
du kan forøvrigt se resultatet af vores fælles arbejde på:

www.foredrags
portalen.dk/
Avatar billede jpvj Nybegynder
07. september 2004 - 18:47 #54
Jamen velbekomme :-)
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