Avatar billede nielshenrik Nybegynder
11. juli 2002 - 14:48 Der er 4 kommentarer og
1 løsning

Filtrering af listboxe

Hjælp, jeg er forholdsvis ny i Access og VBA og gået helt kold.

Jeg har en forespørgsel med felterne PERIODE, MARKED og BUTIK. En Periode kan rumme flere Markeder og butikker, ligesom et Marked kan rumme flere Butikker.

Jeg har lavet en formular, hvorpå jeg har 3 comboboxe: PERIODE, MARKED og BUTIK.

I denne formular er det tanken, at jeg kan vælge PERIODE, MARKED eller BUTIK (jeg kan nøjes med et valg, men jeg kan også udvælge alle 3 og herefter kommer en underformular frem med Produkter der er aktive i de valgte comboboxe). Til dette formål har jeg brugt noget SQL kode der opdatere underformularens RecordSource - og det virker p.t fint.

Problemet er at når jeg f.eks. vælger en PERIODE ønsker jeg at comboboxene MARKED og BUTIK opdateres, således at de kun viser de aktive Markeder og Butikker der er i den valgte PERIODE.

Som det er lige nu vises alle Markeder og Butikker selvom de ikke er i den valgte Periode, hvilket besværliggøre mit valg en hel del.

Er der nogle der kan hjælpe med det, evt. med et eksempel eller forslag til hvordan jeg skal gribe det an?
Avatar billede terry Ekspert
11. juli 2002 - 15:15 #1
You can alter the combo boxes RowSource

Me.cboMARKED.RowSource = "SELECT * FROM YourQuery WHERE PERIOD = " & Me.cboPERIODE
Avatar billede terry Ekspert
11. juli 2002 - 15:16 #2
Me.cboMARKED.RowSource = "SELECT * FROM YourQuery WHERE PERIOD = '" & Me.cboPERIODE & "'"
Avatar billede terry Ekspert
11. juli 2002 - 15:39 #3
The above example can be used to select the correct infromation in the comb boxes. You now have to make a FILTER. THis can be done by testing to see if there there is selected from  one or more of the combo's and building an SQL statement in VBA!

EXAMPLE:

Dim sWhere As String

sWhere = " WHERE 1"

If Len(Me.cboPERIODE) > 0 Then
  sWhere = sWhere & " AND PERIODE = " & Me.cboPERIODE
End If

If Len(Me.cboMARKED ) > 0 Then
  sWhere = sWhere & " AND MARKED  = " & Me.cboMARKED
End If

If Len(Me.cboBUTIK ) > 0 Then
  sWhere = sWhere & " AND BUTIK= " & Me.cboBUTIK
End If


Then you can open the other form with

DoCmd.OpenForm stDocName, , , sWhere
Avatar billede nielshenrik Nybegynder
11. juli 2002 - 16:31 #4
Hej Terry,

Tak for dit hurtige svar, det ser jo rimelig enkelt ud, men jeg vil lige kigge nærmere på det engang i aften eller morgen, så du kan få dine point

Mvh
Niels
Avatar billede terry Ekspert
11. juli 2002 - 17:38 #5
thanks, igf you have any problems then let me know.

I have notice a LITTLE problem though!
change the line
sWhere = " WHERE 1"
to
sWhere = " 1"
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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