for each item in Request.Form If item <> \"\" then blnSearch = true End if Exit for
next
If blnSearch = true then strSQL = strSQL & \"WHERE \" End if
\'Søg på BRAND If brand <> \"\" then strSQL = strSQL & \"colBrand=\'\" & brand & \"\' \" End if
\'Søg på PRODUCT If product <> \"\" then strSQL = strSQL & \"colProduct=\'\" & product & \"\' \" End if
Søg på FRITEKST If searchstring <> \"\" then strSQL = strSQL & \"searchstring LIKE \'%\" & searchstring & \"%\'\" End if ----------------
SQL strengen ser sådan ud:
SELECT * FROM imagebank WHERE colBrand=\'space\' colProduct=\'ting1\'
På en eller anden måde skal jeg have den til at se om der er flere items (og evt. hvor mange) i søgekriterierne, og så sætte \"AND\" ind imellem, så SQL forespørgslen bliver rigtig.
Jeg skal bare have den til selv at finde ud af om man har valgt at søge i ét eller flere felter. Hvis det er flere felter, skal den selv sætte \"AND\" ind imellem.
Det er sikkert bare en lille ting jeg mangler i scriptet.
Hej Jeg har med gode resultater brugt følgende fritekstsøgning. Den kan ændres til at søge på de felter du ønsker.
<% Dim Connect, Query, TabelNavn, SoegKriterie
Set Connect = Server.CreateObject(\"ADODB.Connection\")
SoegKriterie = Request.QueryString (\"Text\")
TabelNavn = \"profiltbl\"
Connect.Open \"medlemskartotek\"
set Query = Connect.Execute (\"SELECT * FROM \" & TabelNavn & \" WHERE HoldNavn like \'%\" & SoegKriterie & \"%\' OR ForNavn like \'%\" & SoegKriterie & \"%\' OR EfterNavn like \'%\" & SoegKriterie & \"%\' OR Adresse like \'%\" & SoegKriterie & \"%\' OR PostNummer like \'%\" & SoegKriterie & \"%\' OR By like \'%\" & SoegKriterie & \"%\' OR TelefonNummer like \'%\" & SoegKriterie & \"%\' OR Email like \'%\" & SoegKriterie & \"%\' OR Foedselsdato like \'%\" & SoegKriterie & \"%\' OR IndmeldDato like \'%\" & SoegKriterie & \"%\'\")
Tak for dit svar, men det er ikke helt det jeg er ude efter. Dit script søger på ravl og krat, bare et af felterne indeholder et af ordene.
Jeg vil gerne have mulighed for at indskrænke søgningen, sådan så hvis man har udfyldt 2 felter, så skal BEGGE de ord indgå i søgningen.
Det script jeg bruger opfylder næsten mit behov, men der er kun en mindre detalje der gør, at den ikke ved om der bliver søgt på flere felter, og så selv sætte AND ind imellem variablerne.
Du kan gøre det, at du sætter et kriterie ind, uanset om feltet er udfyldt eller ej. Prøv fx. følgende stump kode:
\' Et kriterie, der altid er sandt true_statement = \"(1=1)\"
\'Søg på BRAND If brand <> \"\" then strSQL = strSQL & \"colBrand=\'\" & brand & \"\' \" else strSQL = strSQL & true_statement end if
\'Søg på PRODUCT If product <> \"\" then strSQL = strSQL & \" AND colProduct=\'\" & product & \"\' \" else strSQL = strSQL & \" AND \" & true_statement end if
\'Søg på FRITEKST If searchstring <> \"\" then strSQL = strSQL & \" AND searchstring LIKE \'%\" & searchstring & \"%\'\" else \' Den sidste er principielt ikke nødvendig strSQL = strSQL & \" AND \" & true_statement end if
Altså: Hvis feltet ikke er udfyldt indsætte der blot (1=1) - og man kan roligt sætte AND imellem alle tre.
En lille kommentar: Mit kodeforslag er ikke just en pæn løsning. Fx. vil udvidelser til yderligere kriterier kræve nærlæsning af koden. I stedet bør man lave en mere generel løsning. Følgende giver et eksempel på en struktur, der kan anvendes (kræver bla. at man tilgår en ekstra attribut for feltnavnet i dit input felt):
strSQL = \"SELECT * FROM images where (1=1) \" for each item in Request.Form If item <> \"\" then strSQL = strSQL & \" AND \" item.fieldname & \"=\" & item.value End if Exit for
Ovenstående kan udvides til også at håndtere \"like\" m.m.
Synes godt om
Ny brugerNybegynder
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.