Tuurlijk, geen probleem!
Het is eigenlijk vrij simpel: ik heb in de koptekst van het formulier een keuzelijst gemaakt, die is gebaseerd op de tabel Groepen.
Deze keuzelijst staat in wezen los van het formulier; je wilt in de keuzelijst meestal andere waarden zien dan je als basis voor je formulier gebruikt. Uiteraard pak je wel een veld dat je kunt gebruiken om te filteren, zoals in dit geval Groepen.
De
Rijbron van de keuzelijst is daarom de volgend query:
Code:
SELECT Groepen FROM Groepen GROUP BY Groepen ORDER BY Groepen;
Of te wel: laat alle groepen zien uit de tabel Groepen.
Overigens doet deze code hetzelfde:
Code:
SELECT DISTINCT Groepen FROM Groepen ORDER BY Groepen;
Met Group By, of Distinct, zorg je ervoor, dat alle waarden uit een tabel maar een keer in de lijst worden gezet.
Vervolgens heb je een
actie nodig die optreedt als je een keuze hebt gemaakt. Meestal doe je dat bij de gebeurtenis <Na bijwerken>.
In onderstaande code zie je wat er gebeurt. Eerst wordt gecontroleerd of de lijst leeg is gemaakt, of de tekst 'all' bevat. Met een If..Then..Else wordt dan een van twee handelingen uitgevoerd: ofwel de filtering leegmaken, ofwel een filtering op het formulier zetten.
Als je naar de Eigenschappen van een formulier kijkt, zie je op het tabblad Gegevens een Regel
Filter staan, en een regel
Filter toestaan. Beide eigenschappen worden in de onderstaande code aangepast.
Code:
Private Sub cboGroepen_AfterUpdate()
Dim sFilter As String
If Nz(cboGroepen, "") = "" Or Nz(cboGroepen, "") = "all" Then
Me.Form.Filter = ""
Me.Form.FilterOn = False
Me.Requery
Else
sFilter = "Groepen='" & Me.cboGroepen & "'"
Me.Form.Filter = sFilter
Me.Form.FilterOn = True
End If
End Sub
En dat is eigelijk alles!