Avatar billede tommyf Nybegynder
13. juli 2001 - 20:53 Der er 10 kommentarer og
2 løsninger

Søgning i flere felter, med mulighed for at undlade nogle

Hej, jeg mangler et par eksempler på hvordan man gør nedenstående.

Jeg har en database med nogle felter:
5 Tekst-felter der bruges som ja/nej felter ved at have værdierne Sand/Falsk
1 Tal felt
1 Notat felt

Så skal brugeren kunne vælge om Felt1 skal være Sand/Falsk/Lige meget.
Men f.eks kan brugeren vælge ikke at stille nogle krav til talfeltet, og hvis der skrives noget i talfeltet skal den tage alle dem med der er \"=\" eller større...

Jeg har selv prøvet med dette:
strTekstFelt1 = Request.QueryString(\"TekstFelt1\")
StrTekstFelt2 = Request.QueryString(\"TekstFelt2\")

Og så med SQL:
Sql = \"SELECT * FROM Data WHERE TekstFelt1 LIKE \'%\" & strTekstFelt1 & \"%\' AND TekstFelt2 \'%\" & strTekstFelt2 & \"%\'  ORDER BY Id\"

Men der kan jeg ikke få den til at tage det med der er større, eller få den til at overse dem som folk ikke udfylder.

Hvis I er i tvivl om noget så spørg. Point går til den der får det til at fungere.
Avatar billede tommyf Nybegynder
13. juli 2001 - 22:59 #1
Kom nu frem med jer, ingen grund til at være genert - jeg bad jeg ikke lave en løsningen til mig, bare eksempler hvoraf jeg kunne lære det :o)
Avatar billede jasp.dk Nybegynder
14. juli 2001 - 01:10 #2
Det du har lavet er lidt noget rod.

For du vil søge i en tabel hvor de 5 tekst felter faktisk har 3 muligheder, men kun 2 værdier i databasen.

For at gøre det lidt lettere for dig selv, ville jeg nok anvende f.eks. et tekstfelt eller et tal felt til værdierne for de 5 tekst felter.
Det vil nemlig gøre din sql sætning meget nemmere og uden en hel masse krumspring.

f.eks.

tekstfelt1:
ikke angivet = 0 el. ingenting
true = 1
false = 2

På den måde kan du nemt opbygge din sql sætning som du har skrevet ovenfor.








Avatar billede jasp.dk Nybegynder
14. juli 2001 - 01:12 #3
dog uden Like og %
Avatar billede tommyf Nybegynder
14. juli 2001 - 01:37 #4
Hvordan ville du så lave den? Altså uden \"%\"
Avatar billede jasp.dk Nybegynder
14. juli 2001 - 01:40 #5
Sql = \"SELECT * FROM Data WHERE TekstFelt1 =\'\" & strTekstFelt1 & \"\' AND TekstFelt2=\'\" & strTekstFelt2 & \"\'  ORDER BY Id\"

Fjern \' rundt om værdierne hvis det er en tal værdi du søger efter

Avatar billede tommyf Nybegynder
14. juli 2001 - 02:22 #6
Tak det ser ud til at virke. Venter til i morgen med at afprøve det på alle felter.
Avatar billede tommyf Nybegynder
14. juli 2001 - 15:11 #7
Den vil gerne hvis jeg skriver LIKE, men ikke hvis jeg skriver \"=\" ???
Hvis jeg skriver \"=\" siger den:
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/webhotel/ny/soeg.asp, linje 111

Det er ligeså snart jeg ændre LIKE til \"=\".

Denne sætning virker:
Felt LIKE \'%\" & strFelt & \"%\' AND

Denne giver ovennævnte fejl:
Felt = \'%\" & strFelt & \"%\' AND

Det er et tal felt....
Avatar billede netsrac Praktikant
15. juli 2001 - 16:46 #8
Fjern dine % hvis du bruger =, % er wildcard til brug ved LIKE
Avatar billede netsrac Praktikant
15. juli 2001 - 17:01 #9
strTekstFelt1 = Request.QueryString(\"TekstFelt1\")
StrTekstFelt2 = Request.QueryString(\"TekstFelt2\")
strTalfelt = Request.QueryString(\"talFelt\")


Sql = \"SELECT * FROM Data WHERE TekstFelt1 LIKE \'%\" & strTekstFelt1 & \"%\' AND TekstFelt2 \'%\" & strTekstFelt2 & \"%\' \"
if strtalfelt <> \"\" then
sql = sql & \"AND talfelt >= \" & strTalfelt & \" \"
end if
sql = sql & \"ORDER BY Id\"
Avatar billede netsrac Praktikant
15. juli 2001 - 17:05 #10
Det var et svar :-)
Avatar billede tommyf Nybegynder
15. juli 2001 - 17:06 #11
Tak begge to. Netsrac hjalp mig med den sidste del så point bliver delt mellem jer.
Igen, tak for hjælpen :o)
Avatar billede netsrac Praktikant
15. juli 2001 - 17:07 #12
Så lidt :-)
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