Filter in doorlopend formulier

Status
Niet open voor verdere reacties.

williamjr007

Gebruiker
Lid geworden
26 jun 2008
Berichten
45
Goeiedag,

ik knoei al twee dagen op volgende probleem (misschien zoek ik het te ver...:confused:)

Ik heb een doorlopend formulier waarvan het veld "Personeel" een keuzeveld is met drie namen (Jan/Piet/An ---> deze waarden komen uit een query)

Nu wil ik drie knoppen op mijn formulier: knopJan, knopPiet en knopAn.
Klik ik op knopJan, dan wil ik alle records te zien krijgen waarvan in het veld Personeel de naam "Jan" staat.

Ik heb al vanalles geprobeerd in vba met filter, maar helaas, geen succes...

Op zich denk ik dat het niet zo complex kan zijn, maar ik slaag er zelf niet in.
Kan iemand hulp bieden?

Alvast bedankt!
Willy
 
Na veel testen kom ik tot de conclusie dat je blijkbaar geen filter kan zetten op een veld dat zelf gebaseerd is op een query of op een berekend veld.
Klopt dat?

Ik gebruik volgende code (die dus niet werkt en steeds vast loopt op de 3de lijn):

Private Sub btnJan_Click()
Me.Filter = "Personeel = 'Jan'"
Me.FilterOn = True
End Sub

Als ik dit toepas op een ander veld (genaamd 'Code') dan werkt de filter zoals het moet. Dat doet mij dus vermoeden dat dergelijke code niet werkt op een keuzelijst of berekend veld.

Is hier een oplossing voor?

Bedankt!
 
Is 'Jan' ook daadwerkelijk opgeslagen in het veld waar je op filtert of is daar een nummer in opgeslagen?
 
Is 'Jan' ook daadwerkelijk opgeslagen in het veld waar je op filtert of is daar een nummer in opgeslagen?

Als ik er even een msgBox tussen zet krijg ik inderdaad een getal, wat in't geval van Jan een 2 is.
Ik had dan reeds de code aangepast zoals onderaan, maar toch loopt hij steeds vast..

Private Sub btnJan_Click()
Me.Filter = "Personeel = '2'"
Me.FilterOn = True
End Sub
 
Je gebruikt, in mijn ogen, een erg onhandige constructie. Ik zou dit oplossen m.b.v. een keuzelijst in de koptekst waarin je de personen neerzet (vergelijkbaar met de keuzelijst die je nu ook gebruikt). Die keuzelijst haalt het ID op (getal dus). En daar filter je dan vervolgens mee. E.e.a. hang je aan de gebeurtenis <Bij klikken> en dat gaat het filter gelijk lopen als je een optie aanklikt.
Je code is verder niet correct, want je kunt een getal niet filteren als een tekst (en omgekeerd).

Code:
Private Sub cboPersoneel_Click()
     Me.Filter = "Personeel = " & Me.cboPersoneel
     Me.FilterOn = True
End Sub
 
Je gebruikt, in mijn ogen, een erg onhandige constructie. Ik zou dit oplossen m.b.v. een keuzelijst in de koptekst waarin je de personen neerzet (vergelijkbaar met de keuzelijst die je nu ook gebruikt). Die keuzelijst haalt het ID op (getal dus). En daar filter je dan vervolgens mee. E.e.a. hang je aan de gebeurtenis <Bij klikken> en dat gaat het filter gelijk lopen als je een optie aanklikt.
Je code is verder niet correct, want je kunt een getal niet filteren als een tekst (en omgekeerd).

Code:
Private Sub cboPersoneel_Click()
     Me.Filter = "Personeel = " & Me.cboPersoneel
     Me.FilterOn = True
End Sub

Werkt perfect nu!!
Heel hard bedankt!
Ik moet eerlijk toegeven dat ik de logica nog niet helemaal doorheb waarom het met jouw code wel werkt, maar da ga ik me eens rustig over bezinnen.
In ieder geval bedankt!

Willy
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan