Avatar billede cyberbase Nybegynder
10. januar 2001 - 11:14 Der er 5 kommentarer og
1 løsning

Brug af og, eller, ikke i en søgemaskine

Jeg har en oprettet en Asp-søgemaskine til en Accessdb. På min html-søgeside har jeg 7 søgefelter, mellem hvert af søgefelterne har jeg oprettet en drop-drown boks med muligheden for enten at vælge og, eller, ikke, som skal muliggøre forskellige søgemuligheder - altså enten fælles-, forenings- eller \"differens\"-mængden.

Mit problem er nu, hvordan jeg kan gør dette muligt, når fx kun felt 3, 5 og 7 er udfyldt og drop drown boksen udfor felt 3 fx står til \"eller\" og udfor felt 5 står til \"ikke\".

Variablerne Strog1, Strog2 osv. indeholder dropdownboks-værdierne.

Mine select-sætninger ser således ud.

strSQL = \"SELECT * FROM af WHERE\"

If Len(strafond) > 0 Then
strSQL = strSQL & \" (af LIKE \'%\" & straf & \"%\')\"
End if

If Len(strarbet) > 0 Then
If strog1 = \"og\" then
strSQL = strSQL & \" AND (arbet LIKE \'%\" & strarbet & \"%\')\"
End if
If strog1 = \"eller\" then
strSQL = strSQL & \" OR (arbet LIKE \'%\" & strarbet & \"%\')\"
End if
If strog1 = \"ikke\" then
strSQL = strSQL & \" AND (arbet NOT LIKE \'%\" & strarbet & \"%\')\"
End if
End if

If Len(strfodt) > 0 Then
If strog2 = \"og\" then
strSQL = strSQL & \" AND (fodt LIKE \'%\" & strfodt & \"%\')\"
End if
If strog2 = \"eller\" then
strSQL = strSQL & \" OR (fodt LIKE \'%\" & strfodt & \"%\')\"
End if
If strog2 = \"ikke\" then
strSQL = strSQL & \" AND (fodt NOT LIKE \'%\" & strfodt & \"%\')\"
End if
End if


If Len(strdod) > 0 Then
If strog3 = \"og\" then
strSQL = strSQL & \" AND (dod LIKE \'%\" & strdod & \"%\')\"
End if
If strog3 = \"eller\" then
strSQL = strSQL & \" OR (dod LIKE \'%\" & strdod & \"%\')\"
End if
If strog3 = \"ikke\" then
strSQL = strSQL & \" AND (dod NOT LIKE \'%\" & strdod & \"%\')\"
End if
End if

If Len(strsted) > 0 Then
If strog4 = \"og\" then
strSQL = strSQL & \" AND (sted LIKE \'%\" & strsted & \"%\')\"
End if
If strog4 = \"eller\" then
strSQL = strSQL & \" OR (sted LIKE \'%\" & strsted & \"%\')\"
End if
If strog4 = \"ikke\" then
strSQL = strSQL & \" AND (sted NOT LIKE \'%\" & strsted & \"%\')\"
End if
End if


If Len(strindsig) > 0 Then
If strog5 = \"og\" then
strSQL = strSQL & \" AND (indsig LIKE \'%\" & strindsig & \"%\')\"
End if
If strog5 = \"eller\" then
strSQL = strSQL & \" OR (indsig LIKE \'%\" & strindsig & \"%\')\"
End if
If strog5 = \"ikke\" then
strSQL = strSQL & \" AND (indsig NOT LIKE \'%\" & strindsig & \"%\')\"
End if
End if


If Len(strindhold) > 0 Then
If strog6 = \"og\" then
strSQL = strSQL & \" AND (indhold LIKE \'%\" & strindhold & \"%\')\"
End if
If strog6 = \"eller\" then
strSQL = strSQL & \" OR (indhold LIKE \'%\" & strindhold & \"%\')\"
End if
If strog6 = \"ikke\" then
strSQL = strSQL & \" AND (indhold NOT LIKE \'%\" & strindhold & \"%\')\"
End if
End if
Avatar billede tigerdyr Nybegynder
10. januar 2001 - 11:46 #1
IF (box = \"og\") THEN
  strSQL = strSQL + \" AND \"
ELSE IF (box = \"eller\") THEN
  strSQL = strSQL + \" OR \"
ELSE IF (box = \"ikke\") THEN
  strSQL = strSQL + \" AND NOT \"
END IF

hvor box selvfølgelig er din dropdown
Avatar billede cyberbase Nybegynder
10. januar 2001 - 12:35 #2
Prøv lige at uddybe dit svar!
Avatar billede prof2 Nybegynder
10. januar 2001 - 14:15 #3
Hvis der er en fejl, skal du prøve med en parantes rundt om det HELE.. Så hvert led står i parantes, som står i en parantes...

Eks.:
Select * from [tabel] where ((field1 LIKE \'%tekst%\') OR (field2 LIKE \'%tekst2%\'))

Jeg tror ikke det var det der var problemet, men nu har jeg sagt det...
Avatar billede tigerdyr Nybegynder
10. januar 2001 - 14:41 #4
Bare lav et tjek på de dropdown bokse du har behov for og sæt den respektive boolske operator ind i din SQL sætning... det laver du med nogle IF sætninger i stil med ovenstående...
Avatar billede cyberbase Nybegynder
11. januar 2001 - 08:27 #5
Jeg er ikke helt med tigerdyr.

Prøv fx at sætte dit forslag ind i denne del af scriptet:

If Len(strarbet) > 0 Then
If strog1 = \"og\" then
strSQL = strSQL & \" AND (arbet LIKE \'%\" & strarbet & \"%\')\"
End if
If strog1 = \"eller\" then
strSQL = strSQL & \" OR (arbet LIKE \'%\" & strarbet & \"%\')\"
End if
If strog1 = \"ikke\" then
strSQL = strSQL & \" AND (arbet NOT LIKE \'%\" & strarbet & \"%\')\"
End if
End if


Er det evt. ikke muligt at indsætte de boolske operatorer sidst i StrSQL = strSQL & \".... - sætningerne?

Avatar billede cyberbase Nybegynder
11. januar 2001 - 14:24 #6
Desværre: idet jeg ikke har fået et svar, jeg kan bruge til at løse mit problem (ihvert tilfælde ikke et svar, som jeg kan forstå), vælger jeg hermed at lukke spørgsmålet.
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

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