Een enkele actie, zoals het verplaatsen van een besturingselement op een object naar een ander besturingselement, kan verschillende gebeurtenissen activeren, die zich in een bepaalde volgorde voordoen. Weten wanneer gebeurtenissen plaatsvinden en in welke volgorde ze plaatsvinden, is belangrijk, omdat dit van invloed kan zijn op hoe en wanneer uw macro's of gebeurtenisprocedures worden uitgevoerd. Als er bijvoorbeeld twee gebeurtenisprocedures zijn die in een bepaalde volgorde moeten worden uitgevoerd, moet u ervoor zorgen dat de gebeurtenissen waaraan ze zijn gekoppeld in dezelfde volgorde plaatsvinden.
In dit artikel
Volgorde van gebeurtenissen voor besturingselementen op formulieren
Gebeurtenissen voor besturingselementen op formulieren vinden plaats wanneer u de focus verplaatst naar een besturingselement en wanneer u gegevens in een besturingselement wijzigt en bijwerkt.
Opmerking: In Microsoft Office Access worden namen van gebeurtenissen anders weergegeven in de Visual Basic Editor dan in het eigenschappenvenster en in de opbouwfunctie voor macro's. De gebeurtenis met de naam Bij focus in het eigenschappenvenster van het formulier en in de opbouwfunctie voor macro's heet bijvoorbeeld GotFocus in de Visual Basic Editor. In de voorbeelden in dit artikel worden de gebeurtenisnamen van VBA (Visual Basic for Applications) gebruikt.
De focus naar een besturingselement verplaatsen
Wanneer u de focus verplaatst naar een besturingselement op een formulier (bijvoorbeeld door een formulier te openen dat een of meer actieve besturingselementen bevat, of door naar een ander besturingselement op hetzelfde formulier te gaan), vinden de gebeurtenissen Enter en GotFocus plaats in deze volgorde:
Voer GotFocus in
Wanneer u een formulier opent, vinden de gebeurtenissen Enter en GotFocus plaats na de gebeurtenissen die zijn gekoppeld aan het openen van het formulier (zoals Open, Activate en Current) in deze volgorde:
Openen (formulier) Activeren (formulier) Huidige (formulier) Enter (besturingselement) GotFocus (besturingselement )
Wanneer een besturingselement op een formulier de focus verliest (bijvoorbeeld wanneer u een formulier sluit dat een of meer actieve besturingselementen bevat, of wanneer u naar een ander besturingselement op hetzelfde formulier gaat), vinden de gebeurtenissen Exit en LostFocus plaats in deze volgorde:
LostFocus afsluiten
Wanneer u een formulier sluit, vinden de gebeurtenissen Exit en LostFocus plaats vóór de gebeurtenissen die zijn gekoppeld aan het sluiten van het formulier (zoals Unload, Deactivate en Close) in deze volgorde:
Afsluit (besturingselement) LostFocus (besturingselement ) Unload (formulier) Deactiveren (formulier) Sluiten (formulier)
Gegevens in een besturingselement wijzigen en bijwerken
Wanneer u gegevens in een besturingselement op een formulier invoert of wijzigt en vervolgens de focus naar een ander besturingselement verplaatst, vinden de gebeurtenissen BeforeUpdate en AfterUpdate plaats:
BeforeUpdate Afte rUpdate
De gebeurtenissen Exit en LostFocus voor een besturingselement waarvan de waarde wordt gewijzigd nadat de gebeurtenissen BeforeUpdate en AfterUpdate zijn uitgevoerd:
BeforeUpdate AfterUpdate Exit LostFocus
Wanneer u de tekst in een tekstvak of in het invoervak van een keuzelijst wijzigt, vindt de gebeurtenis Change plaats. Deze gebeurtenis vindt altijd plaats wanneer de inhoud van het besturingselement wordt gewijzigd en voordat u de focus naar een ander besturingselement of een andere record verplaatst (dus voordat de gebeurtenissen BeforeUpdate en AfterUpdate plaatsvinden). De volgende reeks gebeurtenissen vindt plaats voor iedere toets die u in een tekstvak of het invoervak van een keuzelijst indrukt:
KeyDown KeyPress Dirty Change KeyUp
De gebeurtenis NotInList vindt plaats nadat u een waarde hebt ingevoerd in een keuzelijst met invoervak die niet is gevonden in de keuzelijst en u vervolgens probeert om de focus verplaatsen naar een ander besturingselement of andere record. De gebeurtenis NotInList vindt plaats na de toetsenbordgebeurtenissen en de gebeurtenissen Change voor de keuzelijst met invoervak, maar vóór de gebeurtenissen voor een ander besturingselement of het formulier. Als de eigenschap LimitToList van de keuzelijst met invoervak is ingesteld op Yes, treedt de gebeurtenis Error voor het formulier direct op na de gebeurtenis NotInList:
KeyDown KeyPress Dirty Change KeyUp NotInList 0 Error
Volgorde van gebeurtenissen voor records op formulieren
Gebeurtenissen voor records op formulieren vinden plaats wanneer u de focus verplaatst naar een andere record, gegevens in een record bijwerkt, een of meer bestaande records verwijdert of een nieuwe record maakt.
De focus verplaatsen naar records en gegevens in records bijwerken
Wanneer u de focus verplaatst naar een bestaande record op een formulier, gegevens in de record invoert of wijzigt en vervolgens de focus naar een andere record verplaatst, vindt de volgende reeks gebeurtenissen voor het formulier plaats:
Huidige (formulier) BeforeUpdate (formulier) AfterUpdate (formulier) Huidige (formulier)
Wanneer u de record met de gewijzigde gegevens verlaat, maar voordat u de volgende record kiest, vinden de gebeurtenissen Exit en LostFocus plaats voor het besturingselement met de focus. Deze gebeurtenissen vinden plaats na de gebeurtenissen BeforeUpdate en AfterUpdate voor het formulier, in deze volgorde:
BeforeUpdate (formulier) AfterUpdate (formulier) Exit (besturingselement) LostFocus (besturingselement) Current (formulier)
Terwijl u de focus op een formulier van het ene besturingselement naar het andere verplaatst, vinden voor elk besturingselement gebeurtenissen plaats. De volgende gebeurtenisreeksen vinden bijvoorbeeld plaats wanneer u de volgende handelingen uitvoert:
-
U opent een formulier en wijzigt gegevens in een besturingselement:
Huidige (formulier) Enter (besturingselement) GotFocus (besturingselement ) BeforeUpdate (besturingselement) AfterUpdate (besturingselement)
-
U verplaatst de focus naar een ander besturingselement:
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
U verplaatst de focus naar een andere record:
BeforeUpdate (formulier) AfterUpdate (formulier) Exit (control2) LostFocus (control2) Current (formulier)
Records verwijderen
Wanneer u een record verwijdert, vinden de volgende gebeurtenissen plaats voor het formulier en verschijnt er een dialoogvenster waarin u wordt gevraagd het verwijderen te bevestigen:
BeforeDelBevesten AfterDelConfirm verwijderen
Als u de gebeurtenis Delete annuleert, vinden de gebeurtenissen BeforeDelConfirm en AfterDelConfirm niet plaats en wordt het dialoogvenster niet weergegeven.
Een nieuwe record maken
Wanneer u de focus verplaatst naar een nieuwe (lege) record op een formulier en vervolgens een nieuwe record maakt door in een besturingselement te typen, vindt de volgende reeks gebeurtenissen plaats:
Huidige (formulier) Enter (besturingselement) GotFocus (besturingselement) BeforeInsert (formulier) AfterInsert (formulier)
De gebeurtenis BeforeInsert (formulier) wordt geactiveerd zodra u begint met typen in het besturingselement. De gebeurtenis AfterInsert (formulier) wordt geactiveerd nadat u de record hebt verlaten.
De gebeurtenissen BeforeUpdate en AfterUpdate voor de besturingselementen op het formulier en voor de nieuwe record vinden plaats na de gebeurtenis BeforeInsert en vóór de gebeurtenis AfterInsert.
Volgorde van gebeurtenissen voor formulieren en subformulieren
Gebeurtenissen voor formulieren vinden plaats wanneer u een formulier opent of sluit, naar een ander formulier gaat of met gegevens op een formulier of subformulier werkt.
Een formulier openen en sluiten
Wanneer u een formulier opent, vindt de volgende reeks gebeurtenissen plaats voor het formulier:
Open Load Resize Activate Current
Als het formulier geen actieve besturingselementen bevat, vindt de gebeurtenis GotFocus voor het formulier plaats na de gebeurtenis Activate, maar voor de gebeurtenis Current.
Wanneer u een formulier sluit, vindt de volgende reeks gebeurtenissen plaats voor het formulier:
Sluiten deactiveren
Als het formulier geen actieve besturingselementen bevat, vindt de gebeurtenis LostFocus voor het formulier plaats na de gebeurtenis Unload, maar voor de gebeurtenis Deactivate.
Schakelen tussen formulieren
Wanneer u overschakelt tussen twee geopende formulieren, vindt voor het eerste formulier de gebeurtenis Deactivate plaats en voor het tweede formulier de gebeurtenis Activate:
Deactiveren (formulier1) Activeren (formulier2)
De gebeurtenis Deactivate voor een formulier vindt ook plaats wanneer u schakelt tussen het formulier en een ander objecttabblad in Access. De gebeurtenis Deactivate vindt echter niet plaats wanneer u overschakelt naar een dialoogvenster, naar een formulier waarvan de eigenschap PopUp is ingesteld op Ja of naar een venster in een ander programma.
Opmerking: De gebeurtenis Open vindt niet plaats als u de focus verplaatst naar een formulier dat al is geopend, ook niet als u de focus verplaatst naar dit formulier door de actie OpenForm uit te voeren.
Werken met gegevens op een formulier
Gebeurtenissen voor formulieren en besturingselementen vinden plaats terwijl u op het formulier van de ene naar de andere record gaat en wanneer u gegevens wijzigt. Wanneer u een formulier bijvoorbeeld voor het eerst opent, vindt de volgende reeks gebeurtenissen plaats:
Openen (formulier) Laden (formulier) Formaat wijzigen (formulier) Activeren (formulier) Huidige (formulier) Enter (besturingselement)0 GotFocus (besturingselement )
Wanneer u een formulier sluit, vindt de volgende reeks gebeurtenissen plaats:
Afsluiten (besturingselement) LostFocus (besturingselement ) Unload (formulier) Deactiveren (formulier) Sluiten (formulier)
Als u gegevens in een besturingselement hebt gewijzigd, vinden de gebeurtenissen BeforeUpdate en AfterUpdate voor het besturingselement en het formulier plaats vóór de gebeurtenis Exit voor het besturingselement.
Werken met subformulieren
Wanneer u een formulier opent dat een subformulier bevat, worden het subformulier en de bijbehorende records geladen vóór het hoofdformulier. De gebeurtenissen voor het subformulier en de bijbehorende besturingselementen (zoals Open, Current, Enter en GotFocus) vinden dus plaats vóór de gebeurtenissen voor het formulier. De gebeurtenis Activate wordt echter niet uitgevoerd voor subformulieren. Wanneer u een hoofdformulier opent, wordt de gebeurtenis Activate daarom alleen uitgevoerd voor het hoofdformulier.
Wanneer u een formulier sluit dat een subformulier bevat, worden het subformulier en de bijbehorende records na het formulier verwijderd. De gebeurtenis Deactiveren vindt niet plaats voor subformulieren. Als u een hoofdformulier sluit, wordt daarom alleen voor het hoofdformulier de gebeurtenis Deactiveren geactiveerd. De gebeurtenissen voor de besturingselementen, het formulier en het subformulier vinden plaats in de volgende volgorde:
-
Gebeurtenissen voor de besturingselementen van het subformulier (zoals Exit en LostFocus)
-
Gebeurtenissen voor de formulierbesturingselementen (met inbegrip van het besturingselement van het subformulier)
-
Gebeurtenissen voor het formulier (zoals Deactivate en Close)
-
Gebeurtenissen voor het subformulier
Opmerking: Omdat de gebeurtenissen voor een subformulier plaatsvinden nadat het hoofdformulier is gesloten, zullen bepaalde gebeurtenissen, zoals het annuleren van het sluiten van het hoofdformulier van een gebeurtenis in het subformulier, niet plaatsvinden. Mogelijk moet u deze typen validatietests verplaatsen naar een gebeurtenis in het hoofdformulier.
Volgorde van gebeurtenissen voor toetsaanslagen en muisklikken
Toetsenbordgebeurtenissen vinden plaats voor formulieren en besturingselementen wanneer u op toetsen drukt of toetsaanslagen verzendt terwijl het formulier of besturingselement de focus heeft. Muisgebeurtenissen vinden plaats voor formulieren, formuliersecties en besturingselementen in formulieren wanneer u op de muisknoppen klikt terwijl de muis aanwijzer zich op een formulier, sectie of besturingselement bevindt. Muisgebeurtenissen treden ook op wanneer u de muis aanwijzer over een formulier, sectie of besturingselement beweegt.
Toetsenbordgebeurtenissen
Wanneer u een toets indrukt en loslaat terwijl een besturingselement op een formulier de focus heeft (of wanneer u een toetsaanslag verzendt met de actie of instructieSendKeys), vindt de volgende reeks gebeurtenissen plaats:
KeyDown KeyPress KeyUp
Wanneer u een toets indrukt en loslaat of een toetsaanslag verzendt in de ANSI-tekenset, vinden de gebeurtenissen KeyDown, KeyPress en KeyUp allemaal plaats. Als u een ANSI-toets ingedrukt houdt, vinden de gebeurtenissen KeyDown en KeyPress herhaaldelijk om de beurt plaats (KeyDown, KeyPress, KeyDown, KeyPress, enzovoort) totdat u de toets loslaat, waarna de gebeurtenis KeyUp wordt uitgevoerd.
Als u een niet-ANSI-toets indrukt en loslaat, vinden de gebeurtenissen KeyDown en KeyUp plaats. Als u een niet-ANSI-toets ingedrukt houdt, vindt de gebeurtenis KeyDown herhaaldelijk plaats totdat u de toets loslaat, waarna de gebeurtenis KeyUp wordt uitgevoerd.
Als door het indrukken van een toets een andere gebeurtenis voor een besturingselement wordt geactiveerd, vindt deze andere gebeurtenis plaats na de gebeurtenis KeyPress, maar vóór de gebeurtenis KeyUp. Als bijvoorbeeld met een toetsaanslag tekst in een tekstvak wordt gewijzigd, waardoor een gebeurtenis Wijzigen wordt uitgevoerd, vindt de volgende reeks gebeurtenissen plaats:
KeyDown KeyPress Change KeyUp
Als met een toetsaanslag de focus van het ene besturingselement naar het andere wordt verplaatst, vindt de gebeurtenis KeyDown plaats voor het eerste besturingselement, terwijl de gebeurtenissen KeyPress en KeyUp voor het tweede besturingselement plaatsvinden. Als u bijvoorbeeld gegevens in een besturingselement wijzigt en vervolgens op Tab drukt om naar het volgende besturingselement te gaan, vindt de volgende reeks gebeurtenissen plaats:
-
Eerste besturingselement:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Tweede besturingselement:
Voer GotFocus KeyPress KeyUp in
Muisgebeurtenissen
Wanneer u een muisknop indrukt en loslaat terwijl de muisaanwijzer zich op een besturingselement van een formulier bevindt, vindt de volgende reeks gebeurtenissen plaats voor het besturingselement:
MouseDown MouseUp klikken
Als een besturingselement de focus heeft en u op een ander besturingselement klikt om de focus naar dit tweede besturingselement te verplaatsen, vindt de volgende reeks gebeurtenissen plaats:
-
Eerste besturingselement:
LostFocus afsluiten
-
Tweede besturingselement:
Voer GotFocus MouseDown in MouseUp klik
Als u naar een andere record gaat en vervolgens op een besturingselement klikt, vindt ook de gebeurtenis Current voor het formulier plaats voordat de gebeurtenis Enter voor het besturingselement plaatsvindt.
Wanneer u dubbelklikt op een besturingselement, vinden de gebeurtenissen Click en DblClick plaats. Wanneer u bijvoorbeeld dubbelklikt op een besturingselement, met uitzondering van een opdrachtknop, vindt de volgende reeks gebeurtenissen plaats voor het besturingselement:
MouseD eigen MouseUp Klik op DblClick MouseUp
Wanneer u dubbelklikt op een opdrachtknop, vindt na de bovenstaande reeks gebeurtenissen nog een tweede gebeurtenis Klikken plaats.
De gebeurtenis MouseMove voor een formulier, sectie of besturingselement vindt plaats wanneer u de muisaanwijzer over het formulier, de sectie of het besturingselement beweegt. Deze gebeurtenis is niet afhankelijk van de andere muisgebeurtenissen.
Volgorde van gebeurtenissen voor rapporten en rapportsecties
Gebeurtenissen voor rapporten en rapportsecties vinden plaats wanneer u een rapport opent om het af te drukken of er een afdrukvoorbeeld van te bekijken, of wanneer u een rapport sluit.
Gebeurtenissen voor rapporten
Wanneer u een rapport opent om het af te drukken of een afdrukvoorbeeld ervan te bekijken en vervolgens het rapport sluit of naar een ander venster in Access gaat, vindt de volgende reeks gebeurtenissen plaats voor het rapport:
Open Activeren sluiten Deactiveren
Wanneer u schakelt tussen twee geopende rapporten, vindt de gebeurtenis Deactivate plaats voor het eerste rapport en de gebeurtenis Activate voor het tweede rapport:
Deactiveren (rapport1) Activeren (rapport2)
De gebeurtenis Deactivate voor een rapport vindt ook plaats wanneer u van een rapport overschakelt naar een ander objecttabblad in Access. De gebeurtenis Deactivate vindt echter niet plaats wanneer u overschakelt naar een dialoogvenster, naar een formulier waarvan de eigenschap PopUp is ingesteld op Ja of naar een venster in een ander programma.
Wanneer u een rapport opent dat is gebaseerd op een query, wordt in Access de gebeurtenis Open uitgevoerd voor het rapport voordat de onderliggende query wordt uitgevoerd. Hierdoor kunt u de criteria voor het rapport instellen met een macro of gebeurtenisprocedure die reageert op de gebeurtenis Openen. Met de macro of gebeurtenisprocedure kan bijvoorbeeld een aangepast dialoogvenster worden geopend waarin u de rapportcriteria invoert.
Gebeurtenissen voor rapportsecties
Wanneer u een rapport afdrukt of een afdrukvoorbeeld hiervan bekijkt, vinden de gebeurtenissen Format en Print voor de rapportsecties plaats na de gebeurtenissen Open en Activate voor het rapport en vóór de gebeurtenissen Close of Deactivate van het rapport:
Open (rapport) Activeren (rapport) Indeling (rapportsectie) Afdrukken (rapportsectie) Sluiten (rapport) Deactiveren (rapport)
Beveiliging U kunt rapportweergave gebruiken om het filteren van rapporten door gebruikers in te schakelen. Maar in tegenstelling tot afdrukvoorbeeld, vinden de gebeurtenissen Opmaak en Afdrukken in een sectie niet plaats in de rapportweergave. Dit geldt ook voor VBA-functieresultaten en door de gebruiker gedefinieerde procedures die worden weergegeven in besturingselementen (zoals labelbijschriften, weergavestatus, voorwaardelijke opmaak, grootte van besturingselementen wijzigen, enzovoort) binnen deze gebeurtenissen. Gebruik daarom in deze gebeurtenis geen code om vertrouwelijke gegevens op te maken, te verbergen of af te drukken, die mogelijk worden weergegeven. U wordt aangeraden de gegevens vooraf te filteren of de preview-versie van het rapport uit te schakelen door de eigenschap AllowReportView in te stellen op Nee.
Bovendien kunnen de volgende gebeurtenissen plaatsvinden tijdens of na het opmaken, maar vóór de gebeurtenis Print:
-
De gebeurtenis Retreat vindt plaats wanneer tijdens het opmaken van een rapport wordt teruggegaan naar een vorige sectie.
-
De gebeurtenis NoData vindt plaats als er in het rapport geen records worden weergegeven.
-
De gebeurtenis Pagina vindt plaats na het opmaken, maar vóór het afdrukken. Met deze gebeurtenis kunt u het uiterlijk van het afgedrukte rapport aanpassen.