Avatar billede kalaharikid Nybegynder
20. april 2003 - 20:09 Der er 5 kommentarer og
1 løsning

Kombineret checkboks og fritekst søgning ?

Hej - Jeg sidder og bakser med en søgefunktion til gårde - Data ligger i en Access database og skal tilgåes fra en asp-webside hvor brugeren skal kunne :

1) foretage en fritekst søgning på en række felter (navn, adresse, by, tlf etc.)

2) Samtidig skal brugeren også kunne indsnævre sin søgning og sige at vedkomende KUN vil have gårde med i søgningen der har bestemte typer produktion (Kød, Korn, Grøntsager etc.) - det gøres med checkbokse fordi felterne er indsat i Access med checkbokse - Jeg har lavet unchecked værdien "%" og checked værdien "-1" i formen på websiden.

Nu kommer problemet : Jeg vil gerne kunne kombinere fritekstsøgningen med emnesøgningen - Men det giver mig nogle gevaldigt lange SQL sætninger á lá :

SELECT * From t_stamdata WHERE EjerNavn LIKE 'fritekst' AND Tilmeldt LIKE 'tilmelding' AND Koed LIKE 'koed' AND .... Og så fremdeles for ca. 15 parametre som så skal gentages igen ved næste fritekstfelt ... Og så slog det mig - der må være en smartere måde :

Kan man lave en select case eller lignende udfra hvilke felter der er checked, som så strikker en dynamisk SQL sætning sammen, eller hvodden skal den skæres ?

Ja, det var i al sin besvæ .. enkelthed bare det !
Avatar billede cesil Nybegynder
20. april 2003 - 22:32 #1
check på om felter er udfyldt.
Opbyg din søgestreng så den kun indeholder de felter der bliver søgt på

if fritekst<>"" then
  if strSQL<>"" then
    strSQL = strSQL & " AND (EjerNavn LIKE '%" & fritekst & "%')"
  else
    strSQL = " (EjerNavn LIKE '%" & fritekst & "%')"
  end if
end if

if tilmelding<>"" then
  if strSQL<>"" then
    strSQL = strSQL & " AND (Tilmeldt LIKE '%" & tilmelding & "%')"
  else
    strSQL = " (Tilmeldt LIKE '%" & tilmelding & "%')"
  end if
end if

osv.

strSQL = "SELECT * From t_stamdata WHERE" & strSQL
Avatar billede burningice Nybegynder
20. april 2003 - 23:12 #2
og hvis du nu var lidt smart med navngivningen af dine form-elementer så kan du lave en For Each Item In Request.Form
Avatar billede kalaharikid Nybegynder
21. april 2003 - 20:14 #3
Tak for de gode forslag - Iler med at prøve dem - og vender snart tilbage
Avatar billede kalaharikid Nybegynder
23. april 2003 - 14:00 #4
Tak Cecil - den er i vinkel - PS: Hvorfor if strSQL <>"" ? Er den nødvendig ?
Avatar billede cesil Nybegynder
23. april 2003 - 15:19 #5
det er et tjek på om der skal tilføjes til din where clausul. Hvis der skal tilføjes skal vi ha AND med ellers ikke.
Avatar billede kalaharikid Nybegynder
27. april 2003 - 11:45 #6
Tak - Nu gik det op for mig - men hvis "SELECT * From t_stamdata WHERE" er med i strSQL vil den jo aldrig fremstå tom ?

Er det OK at lave if sætningen således : if strSQL <> "SELECT * From t_stamdata WHERE" then
osv .... ?
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