Criteria in een Formulier

Status
Niet open voor verdere reacties.

rista62

Gebruiker
Lid geworden
25 nov 2009
Berichten
73
Hallo,
Kan ik in een formulier een criteria maken. Ik heb een tabel "Groepen" en een query "qryBijdrageGroep". Ik wil een formulier maken die alleen voor groep 1 iets laat zien. Zie formulier "frmBijdrageGroep". Ik kan natuurlijk een query maken en vervolgens het formulier naar de query laten verwijzen. Maar kan dit ook in het formulier, en zo ja hoe doe ik dit als beginner?
Ik stuur de bijlage mee.
Gr.
R.
 

Bijlagen

Ik heb je voorbeeldje aangepast met een keuzelijst. Is dit wat je bedoelt?
 

Bijlagen

Hallo,
Dit is wat ik wil, perfect. Bedankt.
Kun je me uitleggen hoe je dit gedaan hebt, ik wil dit zelf ook doen.

Groeten,
R.
 
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!
 
Criteria in Formulier

Hallo,
Heel erg bedankt voor de uitleg. Ik ben weer een stapje verder. Wat ik alleen nog niet begrijp is het volgende.
De benodigde actie is een code, heb je die zelf ingetikt?
Kun je mij de code iets meer uitleggen, ik ben hier niet in thuis?

Dim sFilter As String sFilter is een variabele?
If Nz(cboGroepen, "") = "" Or Nz(cboGroepen, "") = "all" Then Wat betekent Nz? Waarom zet je hier (cboGroepen, "") en niet (cboGroepen)
Me.Form.Filter = "" wat betekent Me.Form.Filter
Me.Form.FilterOn = False wat betekent deze regel
Me.Requery wat betekent deze regel
sFilter = "Groepen='" & Me.cboGroepen & "'" wat betekent deze regel
Me.Form.Filter = sFilter wat betekent deze regel
Me.Form.FilterOn = True wat betekent deze regel

Alvast bedankt.
Gr.
R.
 
Komt-ie:

Dim sFilter As String sFilter is een variabele? --> Inderdaad. Variabelen declareren hoeft niet verplicht te zijn, maar helpt wel te begrijpen wat je waar in stopt.
If Nz(cboGroepen, "") = "" Or Nz(cboGroepen, "") = "all" Then Wat betekent Nz? Waarom zet je hier (cboGroepen, "") en niet (cboGroepen) --> Nz is een functie waarmee je voorkomt dat een procedure stuk loopt op een leeg veld of lege lijst. Met ;"" geef je in de functie aan hoe een veld met de waarde NULL moet worden vertaald. In deze code vervang ik een NULL door een lege string met "". Nu kan ik in de IF ook testen of een veld leeg is, want een NULL waarde wordt nu gezien als "". Je kunt bij getalvalidaties bijvoorbeeld testen op het getal 0 met Nz([Getal],0).
Me.Form.Filter = "" wat betekent Me.Form.Filter --> De code zet een filter op het formulier; met Me.Form geef je aan dat het om het actieve formulier gaat.
Me.Form.FilterOn = False wat betekent deze regel --> Een filter staat aan, of een filter staat uit. Dat wordt geregeld met het commando FilterOn. En dat kan dus Ja zijn (True) of Nee (False)
Me.Requery wat betekent deze regel --> Als er instellingen zijn veranderd, en je hebt de gegevensbron van het formulier veranderd, zodat er andere records te zien moeten zijn, moet het formulier opnieuw worden gegenereerd. Dat doe je met Requery. Me geeft weer aan dat het actieve object een Requery krijgt.
sFilter = "Groepen='" & Me.cboGroepen & "'" wat betekent deze regel --> In de variabele sFilter wordt een tekstreeks geplaatst, bestaande uit de tekst "Groepen ='" en de waarde die is gekozen uit de keuzelijst. Die wordt ook toegevoegd aan de variablestring met & Me.cboGroepen & "'" De variabel wordt tussen enkele quootjes gezet omdat hij als tekst wordt behandeld. Gebruik je getallen, dan is & Me.cboGroepen al genoeg.
Me.Form.Filter = sFilter wat betekent deze regel --> De string die hiervoor is opgebouwd wordt vervolgens toegewezen aan het Formulierfilter. Een eventueel bestaand filter wordt hiermee overschreven.
Me.Form.FilterOn = True wat betekent deze regel --> Het filter wordt geactiveerd.
 
Hoi,
Geweldig bedankt voor de uitleg/beschrijving. Ik ga dit zelf ook proberen. Zoals je begrijpt ben ik nog maar een beginneling, maar ik wil wel meer leren van Access 2003 en VBA (ook voor Excel). Als je nog tips hebt, bijv. boeken en of studie dan hoor ik dat graag van je.
Nogmaals bedankt voor je hulp.
Groetjes,
R.
 
Criteria in formulier

Hallo,
Ik ben nog op zoek naar een antwoord op gestelde vraag qua studie/boek e.d Als iemand iets weet hoor ik het graag.
Alvast bedankt.
GR.
R.
 
Hallo,
Kan iemand mij helpen aan reeds eerder gestelde vraag?
Gr.
R.
 
Er zijn, vind ik althans, niet zo heel veel slechte boeken meer. De meeste boeken bestaan al een paar jaar, en zijn gebaseerd op eerdere versies van Access (geldt uiteraard ook voor andere Office onderdelen...). De slechte boeken zijn in de loop der jaren a.h.w. 'uitgefaseerd' door het publiek, doordat ze niet werden gekocht. Bij een nieuwe Office versie werd dan geen geld meer gestoken in een nieuwe uitgave, met de 'natuurlijke selectie' als gevolg!

Kortom: als je een boek zoekt, is het meer de persoonlijke voorkeur die je moet laten gelden, dan de kwaliteit van het boek, want de laatste zal wel in orde zijn. Kijk dus vooral naar de manier waarop zaken worden uitgelegd; staat de toon van het boek je aan, vind je de layout prettig? Is de inhoud ongeveer wat je zoekt? Als je veel wilt weten over het maken van formulieren, kies dan een boek dat daar extra aandacht aan besteed. Wil je meer weten over het goed opzetten van de database, neem dan een boek dat daar meer op let.
Hetzelfde geld voor VBA: wil je daar meer van weten, kijk dan welk boek de voor jou belangrijke onderwerpen goed behandelt...
Wat ik zelf vaak doe, is boeken scoren op de Boekenbeurs 'Boekenfestijn' die elke maand wel ergens wordt gehouden. Daar vind je over het algemeen niet de boeken voor de nieuwste versies, maar wel van de iets oudere versies. Aangezien ik met alle plezier versie 2007 overslag, en lekker doorga met 2003, kan ik daar voor een fractie van de prijs prima boeken scoren!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan