laden uit query

Opnieuw uitvogelen

Gebruiker
Lid geworden
14 nov 2023
Berichten
21
Ik heb een formulier en dat wil ik filteren op een reeds bestaande query. Ik zie wel de optie in het grijs laden uit query als ik in het formulier zit.
Als ik op formulier filter druk, dan wordt hij wel zwart, maar dan kan ik geen query kiezen.
kan iemand me vertellen hoe dit werkt?
 
Wat wil je bereiken?
 
Hoe heb je het formulier gekoppeld? Aan een opgeslagen query, of aan een SQL query? Sowieso zou ik altijd op het formulier filteren, en niet in de onderliggende query.
 
Op het formulier filteren lukt me dus niet. Ik heb een database met leden en als ik het formulier open krijg ik alle leden. Zowel de huidige als de oude. Ik zou hier graag een filter opzetten dat ik in de formulieren alleen blader tussen de huidige leden
 
Het ligt er aan of je op het formulier in bepaalde gevallen ook oud-leden wilt zien. Ook is het van belang te weten hoe je kunt zien of iemand een huidig lid is of een oud-lid.
Als je altijd alleen maar huidige leden wilt zien, maak je een query om huidige leden te selecteren en baseer je het formulier op die query.
Wil je kunnen kiezen, dan zou je ook knoppen op het formulier kunnen zetten waarmee je een filter activeert of uitzet.

Zelf doe ik de ledenadministratie van een kleine sportvereniging in Access. Het ledenformulier opent met huidige leden en nog-niet-geanonimiseerde oud-leden. Ik heb twee knoppen op het formulier waarmee ik een filter voor alleen huidige leden kan aan- of uitzetten:
Code:
Private Sub ActueleLeden_Click()
    Me.Filter = "IsNull(Einddatum) or Einddatum > Date()"
    Me.FilterOn = True
End Sub


Private Sub AlleLeden_Click()
    Me.FilterOn = False
End Sub
 
Het ligt er aan of je op het formulier in bepaalde gevallen ook oud-leden wilt zien. Ook is het van belang te weten hoe je kunt zien of iemand een huidig lid is of een oud-lid.
Als je altijd alleen maar huidige leden wilt zien, maak je een query om huidige leden te selecteren en baseer je het formulier op die query.
Wil je kunnen kiezen, dan zou je ook knoppen op het formulier kunnen zetten waarmee je een filter activeert of uitzet.

Zelf doe ik de ledenadministratie van een kleine sportvereniging in Access. Het ledenformulier opent met huidige leden en nog-niet-geanonimiseerde oud-leden. Ik heb twee knoppen op het formulier waarmee ik een filter voor alleen huidige leden kan aan- of uitzetten:
Code:
Private Sub ActueleLeden_Click()
    Me.Filter = "IsNull(Einddatum) or Einddatum > Date()"
    Me.FilterOn = True
End Sub


Private Sub AlleLeden_Click()
    Me.FilterOn = False
End Sub
ja die knoppen zouden me zeker helpen. Maar kun je me uitleggen hoe je die knoppen hebt ingesteld? Het gaat bij mij ook om een muziekvereniginging. Dus waarschijnlijk vergelijkbaar als bij jou
 
Even een opmerking Ter Algemeen Nut: blijf uit de buurt van de knop Citeren als er niks te citeren is. Dit is een nutteloze quoot. Je antwoord kon je gelijk in het tekstvak zetten.

De code is heel algemeen, want Me.Filter etc. werkt onder elke knop die je maakt. Kwestie van een nieuwe knop maken, en daar een gebeurtenis aan hangen bij de Eigenschappen van die knop op het tabblad Gebeurtenissen. Die actie hang je dan aan de gebeurtenis Bij klikken>. Je hoeft dus alleen de code te kopiëren die tussen de eerste regel (Private Sub…) en laatste regel (End Sub) staat.

In jouw geval zou ik volstaan met een Wisselknop, en dus afzien van twee knoppen, wat het voorstel van Peter is. Twee knoppen nemen immers meer ruimte in dan één knop, en in essentie wil je ook alleen maar een filter aanzetten of uitzetten. Dat kan dus net zo makkelijk met één knop.

Of, als alternatief: gebruik één Opdrachtknop voor de twee acties. Dat doe ik zelf meestal. Ik verander dan met de gebeurtenis ook de Caption (de tekst op de knop). Op basis van de tekst “Filter aan” zet ik dan de caption op “Filter uit” en het filter aan, en op basis van de tekst “Filter uit” zet ik de caption op “Filter aan” en het filter uit.

Dus iets als:

Code:
Private Sub cmdFilter_Click()
If Me.cmdFilter.Caption = “Filter aan” Then
    Me.Filter = "IsNull(Einddatum) or Einddatum > Date()"
    Me.FilterOn = True
    me.cmdFilter.Caption = “Filter uit”
 ElseIf Me.cmdFilter.Caption = “Filter uit” Then
    Me.cmdFilter.Caption = “Filter aan”
    me.FilterOn = False
End Sub
In dit voorbeeld heb ik dus één knop met de naam cmdFilter, die beide acties (aanzetten en uitzetten) regelt. Overigens kan de ElseIf… regel geheel vervangen worden door het woord Else. Er zijn immers maar twee mogelijkheden op deze manier.
 
Laatst bewerkt:
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan