Az adatbázis-objektumok eseménysorrendje

Hatókör
Microsoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

Egyetlen művelet (például az objektum egyik vezérlőjéről a másikra váltás) több különböző eseményt is elindíthat, amelyek egy adott sorrendben következnek be. Fontos tudni, hogy mikor és milyen sorrendben történnek az események, mert ez befolyásolhatja a makrók és az eseményvezérelt eljárások futását és idejét. Ha például két eseményvezérelt eljárást egy adott sorrendben kell futtatni, meg kell győződnie arról, hogy a hozzájuk kapcsolódó események ugyanabban a sorrendben történnek.

Tartalom

Az űrlapokon lévő vezérlőkön bekövetkező események sorrendje

Az űrlapok vezérlőelemein akkor következnek be események, amikor a fókuszt egy vezérlőre viszi, illetve amikor módosítják és frissítik egy vezérlőelem adatait.

Megjegyzés

A Microsoft Office Access nem ugyanúgy jeleníti meg az események nevét a Visual Basic Editorban, mint a tulajdonságlapon és a Makrószerkesztőben. Az űrlap tulajdonságlapján és a Makrószerkesztőben szereplő Fókusz vételekor eseménynek a Visual Basic Editorban GotFocus a neve. A cikkben szereplő példákban az események nevének VBA (Visual Basic for Applications) formátumú nevét használjuk.

A fókusz áthelyezése egy vezérlőre

Amikor a fókusz egy űrlap valamelyik vezérlőjére kerül (például egy olyan űrlap megnyitásakor, amely egy vagy több aktív vezérlőt tartalmaz, vagy a fókusznak az űrlap egy másik vezérlőjére való átvitelével), az Enter és a GotFocus esemény következik be, az alábbi sorrendben:

EnternyílGotFocus

Ha megnyit egy űrlapot, az Enter és a GotFocus esemény az űrlap megnyitásával kapcsolatos események (az Open, az Activate és a Current) után következik be, az alábbi sorrendben:

Open (űrlap) nyílActivate (űrlap) arrowCurrent (űrlap) arrowEnter (vezérlő) arrowGotFocus (vezérlő)

Amikor a fókusz elhagyja egy űrlap valamelyik vezérlőjét (például egy olyan űrlap bezárásakor, amely egy vagy több aktív vezérlőt tartalmaz, vagy a fókusznak az űrlap egy másik vezérlőjére való átvitelével), az Exit és a LostFocus esemény következik be, az alábbi sorrendben:

KilépésnyílLostFocus

Az űrlapok bezárásakor az Exit és a LostFocus eseményre az űrlap bezárásához kapcsolódó események (az Unload, a Deactivate és a Close) előtt kerül sor, az alábbi sorrendben:

Exit (vezérlő) nyílLostFocus (vezérlő) nyílUnload (űrlap) arrowDeactivate (űrlap) arrowClose (űrlap)

A vezérlőkben szereplő adatok módosítása és frissítése

Ha adatokat ír be egy űrlapon szereplő vezérlőelembe, vagy módosítja a benne szereplő adatokat, majd egy másik vezérlőre viszi a fókuszt, a BeforeUpdate és az AfterUpdate eseményre kerül sor:

Frissítés előttnyílFrissítés után

A módosult értékű vezérlőelem Exit és LostFocus eseményére a BeforeUpdate és az AfterUpdate esemény után kerül sor:

BeforeUpdatenyílAfterUpdatenyílKilépésnyílLostFocus

Ha módosítja a szöveget egy kombinált lista szövegmező részében, a Change esemény következik be. Ez az esemény mindig bekövetkezik, ha a vezérlőelem tartalma módosul, de még azt megelőzően, hogy a fókusz másik vezérlőre vagy rekordra kerül (vagyis a BeforeUpdate és az AfterUpdate esemény előtt). A szövegmezőkben vagy a kombinált listák szövegmező szakaszában minden egyes billentyűlenyomáskor a következő eseménysorozat megy végbe:

LefelényílBillentyűNyomja lea billentyűtDirtyarrowChangearrow Arrow KeyUp

A NotInList esemény következik be, ha olyan értéket ad meg egy kombinált listában, amely nem szerepel a kombinált lista lista részében, és így próbál meg továbblépni egy másik vezérlőre vagy rekordra. A NotInList eseményre a kombinált lista billentyűzeteseményei és Change eseménye után, de még az űrlap minden más vezérlőjének eseményei előtt kerül sor. Ha a kombinált lista LimitToList tulajdonságának értéke Igen, az űrlap Error eseményére közvetlenül a NotInList esemény után kerül sor:

Lefelémutató billentyűBillentyűLenyomásnyílMódosításnyílFelfelé nyílNotInListarrowarrow Error

Vissza a lap tetejére

Az űrlapokon szereplő rekordokon bekövetkező események sorrendje

Az űrlapokon lévő rekordokkal kapcsolatos események akkor következnek be, ha a fókuszt egy másik rekordra viszi, frissíti egy rekord adatait, töröl egy vagy több meglévő rekordot, illetve létrehoz egy új rekordot.

A fókusz átvitele a rekordokra és a rekordokban szereplő adatok frissítése

Ha egy űrlapon egy meglévő rekordra viszi a fókuszt, adatot visz be a rekordba, vagy módosítja a rekord adatait, majd egy másik rekordra viszi a fókuszt, az alábbi eseménysorozat következik be az űrlapon:

Aktuális (űrlap) nyílBeforeUpdate (űrlap) nyílAfterUpdate (űrlap) nyílCurrent (űrlap) nyíl

Amikor elhagyja a módosult adatokat tartalmazó rekordot, de még mielőtt a következő rekordra lép, az Exit és a LostFocus esemény következik be azon a rekordon, amelyen eddig volt a fókusz. Ezekre az eseményekre az űrlap BeforeUpdate és AfterUpdate eseménye előtt kerül sor, az alábbiak szerint:

BeforeUpdate (űrlap) nyílAfterUpdate (űrlap) nyíl Exit (vezérlő) nyílLostFocus (vezérlő) nyílCurrent (űrlap)

Ahogy lépteti a fókuszt egy űrlap vezérlőin, mindegyik vezérlőn bekövetkeznek a megfelelő események. Az alábbi műveletek végrehajtásakor például a következő eseménysorozatok zajlanak le:

  • Űrlap megnyitása és egy vezérlőelem adatainak módosítása:
    Aktuális (űrlap) nyílEnter (vezérlő) nyílGotFocus (vezérlő) nyílFrissítés előtt nyíl Frissítés után nyíl (vezérlő)
  • A fókusz átvitele egy másik vezérlőre:
    Exit (1. vezérlő) nyílLostFocus (1. vezérlő) nyílEnter (2. vezérlő) nyílGotFocus (2. vezérlő)
  • A fókusz átvitele egy másik rekordra:
    BeforeUpdate (űrlap) nyílAfterUpdate (űrlap) nyílExit (2. vezérlő) nyílLostFocus (2. vezérlő) nyílCurrent (űrlap)

Rekordok törlése

Rekord törlésekor bekövetkeznek az alábbi események az űrlapon, és a Microsoft Office Access megjelenít egy párbeszédpanelt, amely kéri a törlés megerősítését:

TörlésnyílBeforeDelConfirmarrowAfterDelConfirm

Ha visszavonja a Delete eseményt, nem kerül sor a BeforeDelConfirm és a AfterDelConfirm eseményre, és nem jelenik meg a párbeszédpanel.

Új rekord létrehozása

Ha egy űrlap új (üres) rekordjára viszi a fókuszt, majd új rekordot hoz létre úgy, hogy adatokat ír be egy vezérlőbe, a következő eseménysorozat megy végbe:

Aktuális (űrlap) nyílEnter (vezérlő) nyílGotFocus (vezérlő) nyílBeforeInsert (űrlap) nyílAfterInsert (űrlap)

A BeforeInsert (űrlap) esemény azonnal elindul, amint Ön elkezd gépelni a vezérlőbe. Az AfterInsert (űrlap) esemény a rekord elhagyása után indul el.

Az űrlapon lévő vezérlők BeforeUpdate és AfterUpdate eseményei és az új rekord eseményei a BeforeInsert esemény után és az AfterInsert esemény előtt következnek be.

Vissza a lap tetejére

Az űrlapokon és a segédűrlapokon bekövetkező események sorrendje

Az űrlapok eseményei az űrlapok megnyitásakor és bezárásakor, az űrlapok közötti váltáskor, illetve az űrlapon vagy segédűrlapon található adatokkal kapcsolatos műveletek alkalmával következnek be.

Űrlap megnyitása és bezárása

Űrlap megnyitásakor az űrlap alábbi eseményei következnek be:

Nyíl megnyitásaBetöltésnyílÁtméretezésnyílAktiválásnyílJelenlegi

Ha nincsenek az űrlapon aktív vezérlők, az űrlap GotFocus eseményére az Activate esemény után, de a Current esemény előtt kerül sor.

Az űrlapok bezárásakor a következő eseménysorozatra megy végbe az űrlapon:

EltávolításnyílInaktiválásnyílBezárás

Ha nincsenek az űrlapon aktív vezérlők, az űrlap LostFocus eseményére az Unload esemény után, de a Deactivate esemény előtt kerül sor.

Váltás az űrlapok között

Ha vált két nyitva lévő űrlap között, először az első űrlap Deactivate eseménye, utána a második űrlap Activate eseménye következik be:

Deactivate (1. űrlap) nyílActivate (2. űrlap)

Az űrlapok Deactivate eseménye akkor is bekövetkezik, ha a felhasználó az űrlapról az Access egy másik objektumlapjára vált. A Deactivate eseményre azonban nem kerül sor, ha párbeszédpanelre vált, vagy egy olyan űrlapra, amelynek PopUp tulajdonsága Yes értékű, illetve egy másik program egy ablakára lép.

Megjegyzés

Az Open esemény nem következik be, ha már megnyitott űrlapra viszi át a fókuszt, még akkor sem, ha egy OpenForm művelettel vitte is át a fókuszt arra az űrlapra.

Az űrlapokon szereplő adatokon végzett műveletek

Az űrlapokon lévő rekordok között való mozgás és az adatok módosításának hatására űrlap- és vezérlőesemények következnek be. Amikor például először nyit meg egy űrlapot, a következő eseménysorozat megy végbe:

Megnyitás (űrlap) nyílBetöltés (űrlap) nyílÁtméretezés (űrlap) nyílAktiválás (űrlap) nyílAktuális (űrlap) nyílEnter (vezérlő) nyílGotFocus (vezérlő)

Az űrlapok bezárásakor pedig a következő eseménysorozat megy végbe:

Exit (vezérlő) nyílLostFocus (vezérlő) nyílUnload (űrlap) arrowDeactivate (űrlap) arrowClose (űrlap)

Ha módosította az adatokat egy vezérlőben, a vezérlő és az űrlap BeforeUpdate és AfterUpdate eseményére is a vezérlő Exit eseménye előtt kerül sor.

Segédűrlapok használata

Ha olyan űrlapot nyit meg, amely segédűrlapot tartalmaz, a segédűrlapok és rekordjaik betöltésére a fő űrlap betöltése előtt kerül sor. Ezért a segédűrlapnak és vezérlőinek az eseményei (például az Open, a Current, az Enter és a GotFocus) az űrlap eseményei előtt következnek be. A segédűrlapoknál azonban nem következik be az Activate esemény. Így tehát a fő űrlap megnyitása csak a fő űrlap Activate eseményét váltja ki.

Ehhez hasonlóan a segédűrlapot tartalmazó űrlapok bezárásakor a segédűrlapot és rekordjait az űrlap után távolítja el a memóriából a rendszer. A segédűrlapoknál nem következik be Deactivate esemény. Így tehát a fő űrlap bezárása csak a fő űrlap Deactivate eseményét váltja ki. A vezérlők, az űrlap és a segédűrlap eseményei az alábbi sorrendben következnek be:

  1. A segédűrlap vezérlőinek eseményei (például Exit és LostFocus)
  2. Az űrlap vezérlőinek eseményei (a segédűrlap vezérlőt is beleértve)
  3. Az űrlap eseményei (például Deactivate és Close)
  4. A segédűrlap eseményei

Megjegyzés

A segédűrlapok eseményeire a fő űrlap bezárása után kerül sor, ezért bizonyos események nem következnek be; ilyen például a fő űrlap bezárásának a segédűrlapon bekövetkező eseményből történő visszavonása. Az ilyen jellegű érvényesség-ellenőrzéseket célszerű a főűrlapon bekövetkező eseményhez kötni.

Vissza a lap tetejére

A billentyűleütés és az egérrel való kattintás hatására bekövetkező események sorrendje

Az űrlapokhoz és vezérlőkhöz kapcsolódó billentyűzetesemények akkor következnek be, ha billentyűket nyom le vagy billentyűleütéseket küld, miközben az űrlap vagy a vezérlő van fókuszban. Az űrlapok, űrlapszakaszok és vezérlőelemek egéreseményeire akkor kerül sor, ha lenyomja az egér gombjait, miközben az egérmutató egy űrlapon, egy szakaszban vagy egy vezérlőelemen van. Akkor is bekövetkeznek egéresemények, ha egy űrlap, szakasz vagy vezérlő fölé viszi az egérmutatót.

Billentyűzetesemények

Amikor lenyom és felenged egy billentyűt, miközben egy űrlapon lévő vezérlő van a fókuszban (vagy ha a Billentyűküldés műveletet vagy utasítást használja billentyűleütés küldésére), a következő eseménysorozat megy végbe:

Lefelé mutatóbillentyűPressArrowKeyUp

Amikor lenyom és felenged egy billentyűt, vagy billentyűleütést küld az ANSI karakterkészletben, a KeyDown, a KeyPress, és a KeyUp esemény is bekövetkezik. Ha egy ANSI-billentyűt lenyomva tart, akkor váltakozva ismétlődik a KeyDown és a KeyPress esemény (KeyDown, KeyPress, KeyDown, KeyPress stb.), amíg fel nem engedi a billentyűt; ekkor bekövetkezik a KeyUp esemény.

Ha egy nem ANSI-billentyűt lenyom és felenged, a KeyDown és a KeyUp esemény következik be. Ha egy nem ANSI-billentyűt lenyomva tart, akkor a KeyDown esemény ismétlődik, amíg fel nem engedi a billentyűt; ekkor bekövetkezik a KeyUp esemény.

Ha egy billentyű lenyomása kiváltja egy vezérlő egy másik eseményét, akkor az az esemény a KeyPress esemény után, de a KeyUp esemény előtt következik be. Ha például egy billentyűleütés módosítja egy szövegmező szövegét, és ezáltal aktiválódik a Change esemény, a következő eseménysorozat megy végbe:

Lefelé mutatóbillentyűNyomja lea nyílbillentyűtNyílbillentyű módosítása

Ha egy billentyűleütés hatására a fókusz egyik vezérlőről a másikra kerül, a KeyDown esemény az első vezérlőn következik be, a KeyPress és a KeyUp esemény pedig a második vezérlőn. Ha például módosítja az adatokat egy vezérlőben, és a TAB billentyű lenyomásával a következő vezérlőre lép, akkor a következő eseménysorozat megy végbe:

  • Első vezérlő:
    KeyDownarrowBeforeUpdatenyílAfterUpdatenyílKilépésnyílLostFocus
  • Második vezérlő:
    EnternyílGotFocusnyílbillentyűNyomja lea nyílbillentyűt

Egéresemények

Ha lenyom vagy felenged egy egérgombot, amikor az egérmutató egy vezérlőelemen vagy egy űrlapon van, az űrlap alábbi eseményei következnek be:

MouseDownarrowMouseUparrowClick

Ha a fókusz egy vezérlőn van, és Ön kattintással átviszi a fókuszt egy másik vezérlőre, az alábbi eseménysorozat következik be:

  • Első vezérlő:
    KilépésnyílLostFocus
  • Második vezérlő:
    EnternyílGotFocusarrowMouseDownarrowMouseUparrowClick

Ha egy másik rekordra lép, majd rákattint egy vezérlőre, akkor az űrlap Current eseménye is bekövetkezik a vezérlő Enter eseménye előtt.

Ha duplán kattint egy vezérlőre, akkor a Click és a DblClick esemény is bekövetkezik. Ha például egy olyan vezérlőre kattint duplán, amely nem parancsgomb, az események alábbi sorozata következik be a vezérlőn:

MouseDownarrowMouseUparrowClickarrowDblClickarrowMouseUp

Ha egy parancsgombra kattint duplán, az előző eseménysorozat zajlik de, de egy második Click esemény követi.

Az űrlapok, a szakaszok és a vezérlők MouseMove eseményére akkor kerül sor, ha az egérmutatót az űrlap, szakasz vagy vezérlő fölé viszi. Ez az esemény független a többi egéreseménytől.

Vissza a lap tetejére

A jelentésekhez és a jelentések szakaszaihoz kapcsolódó események sorrendje

A jelentések nyomtatásra vagy megtekintésre való megnyitásakor, illetve a jelentések bezárásakor a jelentésekhez és a jelentések szakaszaihoz kapcsolódó események következnek be.

A jelentések eseményei

Ha nyomtatásra vagy megtekintésre megnyit egy jelentést, majd később bezárja a jelentést, vagy az Access egy másik objektumlapjára lép, a jelentéshez kapcsolódó események alábbi sorozata következik be:

Nyíl megnyitásaBetöltésnyílAktiválásnyílBezárásnyílInaktiválás

Ha vált két jelentés között, először az első jelentés Deactivate eseménye, utána a második jelentés Activate eseménye következik be:

Inaktiválás (1. jelentés) nyílAktiválás (2. jelentés)

A jelentések Deactivate eseménye akkor is bekövetkezik, ha a felhasználó a jelentésről az Access egy másik objektumlapjára vált. A Deactivate eseményre azonban nem kerül sor, ha párbeszédpanelre vált, vagy egy olyan űrlapra, amelynek PopUp tulajdonsága Yes értékű, illetve egy másik program egy ablakára lép.

Ha lekérdezésen alapuló jelentést nyit meg, az Access előbb a jelentés Open eseményét aktiválja, csak utána futtatja a jelentést megalapozó lekérdezést. Ennek következtében be lehet állítani a jelentés feltételeit olyan makróval vagy eseményvezérelt eljárással, amely az Open eseményre reagál. A makró vagy az eseményvezérelt eljárás például megnyithat egy egyéni párbeszédpanelt, amelyen megadhatók a jelentés feltételei.

A jelentések szakaszainak eseményei

Ha kinyomtat vagy megnyit egy jelentést, a jelentés szakaszainak Format és Print eseménye a jelentés Open és Activate eseménye után, de a jelentés Close vagy Deactivate eseménye előtt következik be:

Megnyitás (jelentés) nyílBetöltés (jelentés) nyílAktiválás (jelentés) nyílFormátum (jelentésszakasz) nyílNyomtatás (jelentésszakasz) nyílBezárás (jelentés) nyílDeaktiválás (jelentés)

Biztonság A Jelentés nézet használatával engedélyezheti a jelentések felhasználói szűrését. A nyomtatási képtől eltérően azonban a Formátum és a Nyomtatás esemény egyik szakaszban sem Jelentés nézetben történik. Ez vonatkozik a VBA-függvények eredményeire és a felhasználó által definiált eljárásokra is, amelyek ezen eseményeken belül vezérlőkben jelennek meg (például címkefeliratok, megjelenítési állapot, feltételes formázás, vezérlők átméretezése stb.). Ezért ebben az esetben ne használjon kódot a bizalmas adatok formázásához, elrejtéséhez vagy nyomtatásához, mivel azok nyilvánosságra kerülhetnek. Azt javasoljuk, hogy előszűrje az adatokat, vagy tiltsa le a Jelentés villámnézete funkciót az AllowReportView tulajdonság Nem értékre állításával.

Ezenkívül a következő események fordulhatnak elő formázás közben vagy után, de még a Print esemény előtt:

  • A Retreat esemény következik be, amikor az Access a jelentés formázása közben visszatér egy előző szakaszra.
  • A NoData esemény következik be, ha nincsenek olyan rekordok, amelyeket a jelentés megjeleníthetne.
  • A Page esemény következik be a formázás után, de a nyomtatás előtt. Ez az esemény felhasználható a kinyomtatott jelentés megjelenésének testreszabásához.

Vissza a lap tetejére