Avatar billede tonnym Nybegynder
20. september 2004 - 13:05 Der er 2 kommentarer og
1 løsning

SQL query med Checkbox valg som kriterier?

Hej,

jeg har lavet et lille program som skulle give brugeren mulighed for at vælge hvilke data de får med ud i en rapport.

Hertil har jeg lavet 3 x checkbox, hvor man så kan krydse af hvad man vil have med.

Når jeg så skal indsætte de kriteriet i SQL forespørgslen, så har jeg et mindre problem.

I første omgang har jeg løst det ved en masse IF sætninger, og det virker da okay nok nu, MEN det bliver jo noget uoverskueligt hvis jeg tilføjer bare 1-2 checkboxe mere!

Jeg har forsøgt lidt med noget array? men da jeg er relativ nu i VB så gik det ikke :o(

Jeg har oprettet et command array ved at kalde checkboxene det samme, men hvordan får man data hentet fra et command array?

PT. ser min udvalgskode sådan her ud:

Dim strUdvalg As String
Dim strOrdreNr As String
Dim strDato As String
Dim strOms As String

If chkOrdreNr.Value = 1 Then
strOrdreNr = "ohornq"
Else
strOrdreNr = ""
End If

If chkDato.Value = 1 Then
strDato = "ohslda"
Else
strDato = ""
End If

If chkOms.Value = 1 Then
strOms = "ohkpri"
Else
strOms = ""
End If


If strOrdreNr = "" And strDato = "" And strOms = "" Then
strUdvalg = "ohornq"
Else
    If strOrdreNr <> "" And strDato = "" And strOms = "" Then
    strUdvalg = strOrdreNr
Else
    If strOrdreNr <> "" And strDato <> "" And strOms = "" Then
    strUdvalg = strOrdreNr & ", " & strDato
Else
    If strOrdreNr <> "" And strDato = "" And strOms <> "" Then
    strUdvalg = strOrdreNr & ", " & strOms
Else
    If strOrdreNr <> "" And strDato <> "" And strOms <> "" Then
    strUdvalg = strOrdreNr & ", " & strDato & ", " & strOms
Else
    If strOrdreNr = "" And strDato <> "" And strOms = "" Then
    strUdvalg = strDato
Else
    If strOrdreNr = "" And strDato <> "" And strOms <> "" Then
    strUdvalg = strDato & ", " & strOms
Else
    If strOrdreNr = "" And strDato = "" And strOms <> "" Then
    strUdvalg = strOms

End If x 8

strUdvalg = strUdvalg & " "

Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "SELECT " & strUdvalg & _
                      "FROM TXOHRE " & _
                      "WHERE ohslda between " & txtFraDato " & _
                      "AND " & txtTilDato
Adodc1.Refresh


Er der nogen som kan hjælpe mig med at få dette opsat på en nemmere måde??
Avatar billede tonnym Nybegynder
20. september 2004 - 14:15 #1
Jeg skulle måske tilføje at jeg benytter VB 6.0 og ikke .Net! Der er vidst nok lidt array forskel i versionerne?
Avatar billede martin_moth Mester
21. september 2004 - 09:40 #2
VB.NET har sin egen kategori, så du er havnet det rigtige sted :o)


________________________________________________________________

Et par tips der kan forenkle:

Brug (1) tags, og brug (2) kontrol arrays.

1. Tags er en parkeringsplads for noget ekstra data til fx. en checkbox.

2. Et kontrolarray er en række af kontroller (fx checkboxe) der hedder det samme, men har et index, så man kan skelne den ene fra den anden. Du laver et kontrolarray ved at oprette en ny checkbox, kopiere den (ctrl+C), indsætte den (Ctrl+V) og sige YES til at oprette et kontrolarray...
_________________________________________________________________

Så hvis alle dine checkboxe hedder fx. chk, og du har 5 af dem, og du giver hver af dem den rigtige tag-værdi (fx. chk(0).tag = "ohornq ") (husk mellemrummet bagefter)

Så kan al ovenstående kode koges ned til:



strUdvalg = ""
for i = 0 to 4
  if chk(i).value = 1 then
    strUdvalg = strUdvalg & chk(i).tag
  end if
next i

Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "SELECT " & strUdvalg & _
                      "FROM TXOHRE " & _
                      "WHERE ohslda between " & txtFraDato " & _
                      "AND " & txtTilDato
Adodc1.Refresh
Avatar billede tonnym Nybegynder
21. september 2004 - 17:32 #3
super! Det var netop sådan noget jeg ledte efter.

Havde ikke lige tænkt på at man kunne "loop'e" igennem checkboxene, så den er jo helt i vinkel!
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