Avatar billede karsten_larsen Praktikant
16. november 2003 - 10:48 Der er 5 kommentarer og
1 løsning

SQL forskelligt antal variable i OR kriterie

Jeg har virkeligt et problem med en SQl med et OR kriterie, hvor antal af kriterier er afhængig af bruger input.

Brugerens input er checkbox som enten kan have værdien tom eller 1.
Er værdien tom skal den ikke indgå i søgningen
Er værdien 1 skal den indgå i søgningen
Der er 5 checkbox, som er uafhængige af hinanden og som henviser til 5 forskellige felter i databasen.

Det som volder problemer er delen i str_soeg_box, hvor det hele kokser såfremt box et ikke vælges.

       
            IF Request.Form("box1") = 1 then
                str_box1 = " box1 = 1 "
            end if
            IF Request.Form("box2") = 1 then
                str_box2 = " OR box2 = 1 "
            end if
            IF Request.Form("box3") = 1 then
                str_box3 = " OR box3 = 1 "
            end if
            IF Request.Form("box4") = 1 then
                str_box4 = " OR box4 = 1 "
            end if
            IF Request.Form("box5") = 1 then
                str_box5 = " OR box5 = 1 "
            end if
            str_soeg_box = " AND (" & str_box1 & str_box2 & str_box3 & str_box4 & str_box5 & ")"

strSQL = "Select Count (*) AS maaned from tabeldata Where Month(dato) = " & maaned_nummer & " AND Year(dato) = " & aar & str_soeg_box

Med en union select vil skabe samme problem, det samme vil et array vel også.

??? :-) karsten_larsen
Avatar billede Slettet bruger
16. november 2003 - 12:03 #1
IF Request.Form("box1") = 1 then
                str_box = " box1 = 1 "
            end if
            IF Request.Form("box2") = 1 then
                str_box = str_box & " OR box2 = 1 "
            end if
            IF Request.Form("box3") = 1 then
                str_box = str_box & " OR box3 = 1 "
            end if
            IF Request.Form("box4") = 1 then
                str_box = str_box & " OR box4 = 1 "
            end if
            IF Request.Form("box5") = 1 then
                str_box = str_box & " OR box5 = 1 "
            end if

            str_soeg_box = " AND (" & str_box & ")"


prøv det her...
Avatar billede eagleeye Praktikant
16. november 2003 - 12:06 #2
Du kan prøve at tilføje lidt mere tik if sætningerne så det med box1->box4 er en streng. Prøv sådan her så tilføjes OR imellem hvis en før er valgt. Samt det AND kommer kun med hvis der er valgt en box.:

            str_box_SQL = ""
            IF Request.Form("box1") = 1 then
                str_box_SQL = str_box_SQL & " box1 = 1 "
            end if
            IF Request.Form("box2") = 1 then
                IF str_box_SQL <> "" then str_box_SQL = str_box_SQL & "OR"
                str_box_SQL = str_box_SQL & " box2 = 1 "
            end if
            IF Request.Form("box3") = 1 then
                IF str_box_SQL <> "" then str_box_SQL = str_box_SQL & "OR"
                str_box_SQL = str_box_SQL & " box3 = 1 "
            end if
            IF Request.Form("box4") = 1 then
                IF str_box_SQL <> "" then str_box_SQL = str_box_SQL & "OR"
                str_box_SQL = str_box_SQL & " box4 = 1 "
            end if
            IF Request.Form("box5") = 1 then
                IF str_box_SQL <> "" then str_box_SQL = str_box_SQL & "OR"
                str_box_SQL = str_box_SQL & " box5 = 1 "
            end if

            if str_box_SQL <> "" then
              str_soeg_box = " AND (" & str_box_SQL & ")"
            else
              str_soeg_box = ""
            end if
Avatar billede Slettet bruger
16. november 2003 - 12:06 #3
nåh.. sådan... jeg forstod ikke lige problemet...

            IF Request.Form("box1") = 1 then
                str_box = " box1 = 1 "
            end if
            IF Request.Form("box2") = 1 then
                IF str_box <> "" then
                    str_box = str_box & " OR box2 = 1 "
                else
                    str_box = " box2 = 1 "
                end if
            end if
            IF Request.Form("box3") = 1 then
                IF str_box <> "" then
                    str_box = str_box & " OR box3 = 1 "
                else
                    str_box = " box3 = 1 "
                end if
            end if
            IF Request.Form("box4") = 1 then
                IF str_box <> "" then
                    str_box = str_box & " OR box4 = 1 "
                else
                    str_box = " box4 = 1 "
                end if
            end if
            IF Request.Form("box5") = 1 then
                IF str_box <> "" then
                    str_box = str_box & " OR box5 = 1 "
                else
                    str_box = " box5 = 1 "
                end if
            end if

            str_soeg_box = " AND (" & str_box & ")"
Avatar billede karsten_larsen Praktikant
16. november 2003 - 12:08 #4
Hvis box1 = ""

Så får jeg følgende i SQL: AND ( OR box2 = 1 OR box4 = 1)og et giver syntax problem.

??:-)k_l
Avatar billede karsten_larsen Praktikant
16. november 2003 - 12:10 #5
ups - kommentareren var til første indlæg. Prøver lige det andet.

:-)
Avatar billede karsten_larsen Praktikant
16. november 2003 - 12:42 #6
Det fungerer perfekt - tak for hjælpen.

:-)) karsten_larsen
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