Avatar billede kalaharikid Nybegynder
01. maj 2003 - 20:09 Der er 3 kommentarer og
1 løsning

Kombineret fritekst og checkboks/felt søgning driller !

Efter gode anvisninger har jeg opbygget en dynamisk sql søgning der med if - sætninger opbygger sql sætningen - Se

http://www.eksperten.dk/spm/342614

Søgningen skal lede efter generelle data (navn, adresse m.m) hvis der er noget i fritekst søgningsfeltet

Eller medtage kategorier hvis der er kryds i checkboksen

databasen er en Access med ja/nej felter m.m.

Der er 2 felter der er obligatoriske :

1) RegionsID (hvorfra i landet)
2) BG_Tilmelding_TY (Er de tilmeldt dette år)

Disse 2 felter skal med i ALLE resultater.

Denne søgning virker også langt hen af vejen :

http://www.alt-om-okologi.dk/besog/bg_search.asp

MEN søger man f.eks. på alle gårde på sjælland er der 2 poster der matcher

Søger man så på "jensen" (fritekstfelt) og sjælland er der pludselig 187 poster og de 2 kriterier bliver ikke udført korrekt - Jeg har sat sql sætningen til at skrive sig selv øverst på resultat-siden - Håber nogle af jer kan gennemskue den - Paster også koden !

MVH Kalaharikid
Avatar billede kalaharikid Nybegynder
01. maj 2003 - 20:12 #1
<%
Dim varFritekst, varRegion, varMelk, varKodkvag, varGrise, varGeder, varFaar, varHons, varGrontsager, varHeste, varGaardbutik, varFrugt, varTilmeldt, Rs, Rs_numRows
varFritekst = Replace(Request.Form("fritekst"),"'","''")
varRegion = Request.Form("Region")
varMelk = Request.Form("melk")
varKodkvag = Request.Form("kodkvag")
varGrise = Request.Form("grise")
varGeder = Request.Form("geder")
varFaar = Request.Form("faar")
varHons= Request.Form("hons")
varGrontsager = Request.Form("grontsager")
varHeste = Request.Form("heste")
varGaardbutik = Request.Form("gaardbutik")
varFrugt = Request.Form("frugt")
varTilmeldt = -1
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.ActiveConnection = MM_connOko_STRING
Rs.Source = "SELECT * FROM HMbrutto2404 "
if varFritekst <>"" then
Rs.Source = Rs.Source & "WHERE EjerNavn LIKE '%" & varFritekst & "%' OR "
Rs.Source = Rs.Source & "GaardNavn LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Adresse LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "SD_TEKST_TY LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Postnr LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Town LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Landsby LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Telefon LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Fax LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "mobil LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "epost LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "URL LIKE '%" & varFritekst & "%' "
end if
if varMelk <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Melk = " & varMelk
else
Rs.Source = Rs.Source & " AND Melk =" & varMelk
end if
end if
if varKoedkvag <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Kodkvag = " & varKoedkvag
else
Rs.Source = Rs.Source & " AND Kodkvag =" & varKoedkvag
end if
end if
if varGrise <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Grise = " & varGrise
else
Rs.Source = Rs.Source & " AND Grise =" & varGrise
end if
end if
if varGeder <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Geder = " & varGeder
else
Rs.Source = Rs.Source & " AND Geder =" & varGeder
end if
end if
if varFaar <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Faar = " & varFaar
else
Rs.Source = Rs.Source & " AND Faar =" & varFaar
end if
end if
if varHons <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Hons = " & varHons
else
Rs.Source = Rs.Source & " AND Hons =" & varHons
end if
end if
if varGrontsager <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Grontsager = " & varGrontsager
else
Rs.Source = Rs.Source & " AND Grontsager =" & varGrontsager
end if
end if
if varHeste <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Heste = " & varHeste
else
Rs.Source = Rs.Source & " AND Heste =" & varHeste
end if
end if
if varFrugt <>"" then
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE Frugt = " & varFrugt
else
Rs.Source = Rs.Source & " AND Frugt =" & varFrugt
end if
end if
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE RegID LIKE '" & varRegion & "'"
else
Rs.Source = Rs.Source & " AND RegID LIKE '" & varRegion & "'"
end if
if Rs.Source = "SELECT * FROM HMbrutto2404 " then
Rs.Source = Rs.Source & "WHERE BG_Tilmelding_TY =" & varTilmeldt & ""
else
Rs.Source = Rs.Source & " AND BG_Tilmelding_TY =" & varTilmeldt & ""
end if
Rs.CursorType = 0
Rs.CursorLocation = 2
Rs.LockType = 1
Rs.Open()
Response.write Rs.Source
Rs_numRows = 0
%>
Avatar billede eagleeye Praktikant
01. maj 2003 - 20:23 #2
Den gør jo faktisk det rigtige da den søger efter  EjerNavn LIKE '%jensen%' OR GaardNavn LIKE '%jensen%' OR  osv osv.

SELECT * FROM HMbrutto2404 WHERE EjerNavn LIKE '%jensen%' OR GaardNavn LIKE '%jensen%' OR Adresse LIKE '%jensen%' OR SD_TEKST_TY LIKE '% jensen%' OR Postnr LIKE '% jensen%' OR Town LIKE '%jensen%' OR Landsby LIKE '% jensen%' OR Telefon LIKE '%jensen%' OR Fax LIKE '%jensen%' OR mobil LIKE '%jensen%' OR epost LIKE '%jensen%' OR URL LIKE '%jensen%' AND RegID LIKE '1' AND BG_Tilmelding_TY =-1

En ting du bør vide er at AND har højre prioritet end OR så den AND'er føst og så OR. Så du skal nok havde en ( ) omkring din fritekst så bliver AND med resten af den som er AND.


Så den ser sådan her ud:

SELECT * FROM HMbrutto2404 WHERE (EjerNavn LIKE '%jensen%' OR GaardNavn LIKE '%jensen%' OR Adresse LIKE '%jensen%' OR SD_TEKST_TY LIKE '% jensen%' OR Postnr LIKE '% jensen%' OR Town LIKE '%jensen%' OR Landsby LIKE '% jensen%' OR Telefon LIKE '%jensen%' OR Fax LIKE '%jensen%' OR mobil LIKE '%jensen%' OR epost LIKE '%jensen%' OR URL LIKE '%jensen%') AND RegID LIKE '1' AND BG_Tilmelding_TY =-1
Avatar billede eagleeye Praktikant
01. maj 2003 - 20:23 #3
Så prøv at rette dette :

if varFritekst <>"" then
Rs.Source = Rs.Source & "WHERE EjerNavn LIKE '%" & varFritekst & "%' OR "
Rs.Source = Rs.Source & "GaardNavn LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Adresse LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "SD_TEKST_TY LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Postnr LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Town LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Landsby LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Telefon LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Fax LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "mobil LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "epost LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "URL LIKE '%" & varFritekst & "%' "
end if


Til:

if varFritekst <>"" then
Rs.Source = Rs.Source & "WHERE (EjerNavn LIKE '%" & varFritekst & "%' OR "
Rs.Source = Rs.Source & "GaardNavn LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Adresse LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "SD_TEKST_TY LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Postnr LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Town LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Landsby LIKE  '% " & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Telefon LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "Fax LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "mobil LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "epost LIKE '%" & varFritekst & "%' OR  "
Rs.Source = Rs.Source & "URL LIKE '%" & varFritekst & "%') "
end if
Avatar billede kalaharikid Nybegynder
01. maj 2003 - 20:55 #4
Eagle- eye - du er et geni !
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