Eno samo dejanje, na primer premik iz enega kontrolnika predmeta na drug kontrolnik, lahko sproži več različnih dogodkov, ki se zgodijo v točno določenem zaporedju. Informacija o tem, kdaj se dogodki zgodijo in v kašnem vrstnem redu se zgodijo, je zelo pomembna, ker lahko vpliva na način in čas izvajanja vaših makrov ali dogodkovnih procedur. Če sta na primer prisotni dve dogodkovni proceduri, ki morata biti zagnani v določenem vrstnem redu, se boste želeli prepričati, da se dogodki, s katerimi sta povezani, izvedejo v enakem vrstnem redu.
V tem članku
Vrstni red dogodkov za kontrolnike v obrazcih
Dogodki se zgodijo za kontrolnike na obrazcih, ko premaknete fokus na kontrolnik in ko spremenite in posodobite podatke v kontrolniku.
Opomba: Microsoft Office Access malo drugače prikazuje imena dogodkov v urejevalniku Visual Basic, kot jih prikazuje na listu lastnosti in v Graditelju makrov. Če je na primer ime dogodka v listu lastnosti in graditelju makrov On Got Focus, se bo isti dogodek v urejevalniku Visual Basic imenoval GotFocus. Primeri v tem članku uporabljajo obliko zapisa Visual Basic za aplikacije (VBA) za imena dogodkov.
Premikanje fokusa na kontrolnik
Ko fokus premaknete na kontrolnik v obrazcu (na primer tako, da odprete obrazec, ki vsebuje vsaj en dejaven kontrolnik, ali tako, da premaknete fokus na drugi kontrolnik v istem obrazcu), se dogodka Enter in GotFocus izvedeta v naslednjem vrstnem redu:
Enter GotFocus
Ko odprete obrazec, se dogodka Enter in GotFocus zgodita po dogodkih, ki so povezani z odpiranjem obrazca (na primer Open, Activate in Current) po naslednjem postopku:
Odpri (obrazec) Activate (obrazec) Current (obrazec) Enter (kontrolnik) GotFocus (kontrolnik)
Ko se fokus odmakne s kontrolnika v obrazcu (na primer, ko zaprete obrazec, ki vsebuje vsaj en dejaven kontrolnik, ali pa se premaknete na drug kontrolnik na istem obrazcu), se izvedeta dogodka Exit in LostFocus v tem vrstnem redu:
Izhod LostFocus
Ko zaprete obrazec, se dogodka Exit in LostFocus zgodita pred dogodki, ki so povezani z zapiranjem obrazca (na primer Unload, Deactivate in Zapri), na naslednji način:
Exit (kontrolnik) LostFocus (kontrolnik) Unload (obrazec) Deactivate (obrazec) Close (obrazec)
Spreminjanje in posodabljanje podatkov v kontrolniku
Ko vnesete ali spremenite podatke v kontrolniku v obrazcu in nato fokus premaknete na drug kontrolnik, se zgodita dogodka BeforeUpdate in AfterUpdate:
BeforeUpdate Afte rUpdate
Dogodka Exit in LostFocus za kontrolnik, katerega vrednost se spremeni po dogodkih BeforeUpdate in AfterUpdate:
BeforeUpdate AfterUpdate Exit LostFocus
Ko spremenite besedilo v delu kombiniranega polja z besedilom, pride do dogodka Change. Ta dogodek se zgodi, ko se vsebina kontrolnika spremeni, preden premaknete fokus na drug kontrolnik ali pa ga zapišete (torej preden se zgodita dogodka BeforeUpdate in AfterUpdate). Naslednje zaporedje dogodkov se zgodi ob vsakem pritisku tipke v polju z besedilom ali delu kombiniranega polja z besedilom:
KeyDown KeyPress Dirty Change KeyUp
Dogodek NotInList se zgodi, ko v kombinirano polje vnesete vrednost, ki je ni na seznamu kombiniranega polja, nato pa poskusite premakniti fokus na drug kontrolnik ali zapis. Dogodek NotInList se zgodi po dogodkih tipkovnice in dogodki Change za kombinirano polje, vendar pred dogodki za kateri koli drugi kontrolnik ali obrazec. Če je lastnost LimitToList kombiniranega polja nastavljena na Da, se dogodek Error za obrazec zgodi takoj po dogodku NotInList:
KeyDown KeyPress Dirty Change KeyUp NotInList 0 Error
Vrstni red dogodkov za zapise v obrazcih
Dogodki se zgodijo za zapise na obrazcih, ko premaknete fokus na drug zapis, posodobite podatke v zapisu, izbrišete obstoječi zapis oziroma zapise ali ustvarite nov zapis.
Premikanje fokusa na zapise in posodabljanje podatkov v zapisih
Ko premaknete fokus na obstoječi zapis v obrazcu, vnesete ali spremenite podatke v zapisu in nato premaknete fokus na drug zapis, se za obrazec zgodi to zaporedje dogodkov:
Current (obrazec) BeforeUpdate (obrazec) AfterUpdate (obrazec) Current (obrazec)
Ko zapustite zapis, katerega podatki so bili spremenjeni, vendar ga zapustite pred vnosom novega zapisa, se zgodite dogodka Exit in LostFocus za kontrolnik, ki je bil v fokusu. Ti dogodki se zgodijo po dogodkih BeforeUpdate in AfterUpdate za obrazec na naslednji način:
BeforeUpdate (obrazec) AfterUpdate (obrazec) Exit (kontrolnik) LostFocus (kontrolnik) Current (obrazec)
Ko fokus premikate med kontrolniki na obrazcu, se zgodijo dogodki za vsak posamezni kontrolnik. Med naslednjim se na primer zgodi naslednje zaporedje dogodkov:
-
odprete obrazec in spremenite podatke v kontrolniku:
Current (obrazec) Enter (kontrolnik) GotFocus (kontrolnik) BeforeUpdate (kontrolnik) AfterUpdate (kontrolnik)
-
premaknete fokus na drug kontrolnik:
Exit (kontrolnik1) LostFocus (kontrolnik1) Enter (kontrolnik2) GotFocus (kontrolnik2)
-
premaknete fokus na drug zapis:
BeforeUpdate (obrazec) AfterUpdate (obrazec) Exit (kontrolnik2) LostFocus (kontrolnik2) Current (obrazec)
Brisanje zapisov
Ko izbrišete zapis, se zgodijo naslednji dogodki za obrazec, Microsoft Office Access pa prikaže pogovorno okno, ki vas pozove k potrditvi brisanja:
Izbriši BeforeDelConfirm AfterDelConfirm
Če prekličete dogodek Delete, se dogodka BeforeDelConfirm in AfterDelConfirm ne zgodita, pogovorno okno pa se ne prikaže.
Ustvarjanje novega zapisa
Ko premaknete fokus na nov (prazen) zapis na obrazcu in nato ustvarite nov zapis tako, da vnesete podatke v kontrolnik, se zgodi naslednje zaporedje dogodkov:
Current (obrazec) Enter (kontrolnik) GotFocus (kontrolnik) BeforeInsert (obrazec) AfterInsert (obrazec)
Dogodek BeforeInsert (obrazec) se sproži takoj, ko začnete tipkati v kontrolnik. Dogodek AfterInsert (obrazec) se sproži, ko zapustite zapis.
Dogodka BeforeUpdate in AfterUpdate za kontrolnike v obrazcu in za nov zapis se zgodita po dogodku BeforeInsert in pred dogodkom AfterInsert.
Vrstni red dogodkov za obrazce in podobrazce
Dogodki za obrazce se zgodijo, ko odprete ali zaprete obrazec, se premikate med obrazci ali delate s podatki na obrazcu ali podobrazcu.
Odpiranje in zapiranje obrazca
Ko odprete obrazec, se zgodi to zaporedje dogodkov za obrazec:
Odpreti nalaganje spreminjanje velikosti aktivirati trenutno
Če na obrazcu ni dejavnih kontrolnikov, se zgodi dogodek GotFocus za obrazec po dogodku Activate, vendar pred dogodkom Current.
Ko zaprete obrazec, se zgodi to zaporedje dogodkov za obrazec:
Unload Deactivate Close
Če na obrazcu ni dejavnih kontrolnikov, se zgodi dogodek LostFocus za obrazec po dogodku Unload, vendar pred dogodkom Deactivate.
Premikanje med obrazci
Ko preklopite med dvema odprtima obrazcema, se dogodek Deactivate zgodi za prvi obrazec, dogodek Activate pa se zgodi za drugi obrazec.
Deactivate (obrazec1) Activate (obrazec2)
Dogodek Deactivate za obrazec se prav tako zgodi, ko preklopite z obrazca na drugi zavihek predmeta v Accessu. Vendar se dogodek Deactivate ne zgodi, ko preklopite na pogovorno okno, obrazec, katerega lastnost PopUp je nastavljena na Da, ali na okno v drugem programu.
Opomba: Dogodek Open se ne zgodi, če premaknete fokus na obrazec, ki je že odprt, čeprav ste premaknili fokus na ta obrazec tako, da ste opravili dejanje OpenForm.
Delo s podatki na obrazcu
Dogodki obrazca in kontrolnika se zgodijo, ko se premikate med zapisi v obrazcu in spreminjate podatke. Ko na primer prvič odprete obrazec, se zgodi to zaporedje dogodkov:
Odpri (obrazec) Load (obrazec) Resize (obrazec) Activate (obrazec) Current (obrazec) Enter (kontrolnik)0 GotFocus (kontrolnik)
Podobno se, ko zaprete obrazec, zgodi to zaporedje dogodkov:
Exit (kontrolnik) LostFocus (kontrolnik) Unload (obrazec) Deactivate (obrazec) Close (obrazec)
Če ste spremenili podatke v krmilniku, se dogodka BeforeUpdate in AfterUpdate za kontrolnik in obrazec zgodita pred dogodkom Exit za krmilnik.
Delo s podobrazci
Ko odprete obrazec, ki vsebuje podobrazec, se podobrazec in njegovi zapisi naložijo pred glavnim obrazcem. Zato se dogodki za podobrazec in njegove kontrolnike (na primer Open, Current, Enter in GotFocus) zgodijo pred dogodki za obrazec. Vendar se dogodek Activate ne zgodi za podobrazce. Zato z odpiranjem glavnega obrazca sprožite dogodek Activate samo za glavni obrazec.
Podobno, ko zaprete obrazec, ki vsebuje podobrazec, se podobrazec in njegovi zapisi zbrišejo po obrazcu. Vendar se dogodek Deactivate ne zgodi za podobrazce. Zato z zapiranjem glavnega obrazca sprožite dogodek Deactivate samo za glavni obrazec. Dogodki za kontrolnike, obrazec in podobrazec se zgodijo v naslednjem vrstnem redu:
-
Dogodki za kontrolnike podobrazca (na primer Exit in LostFocus)
-
Dogodki za kontrolnike obrazca (vključno s kontrolnikom podobrazca)
-
Dogodki za obrazec (na primer Deactivate in Close)
-
Dogodki za podobrazec
Opomba: Ker se dogodki za podobrazec zgodijo po zapiranju glavnega obrazca, se določeni dogodki ne zgodijo, na primer preklic zapiranja glavnega obrazca s strani dogodka v podobrazcu. Tovrstne preizkuse veljavnosti boste morda morali premakniti v dogodek glavnega obrazca.
Vrstni red za pritisnjene tipke in klike miške
Dogodki tipkovnice se zgorijo za obrazce in kontrolnike, ko pritisnete tipke ali pošljete pritiske tipk, ko obrazec ali kontrolnik imata fokus. Dogodki miške se zgodijo za obrazce, odseke obrazcev in kontrolnike na obrazcih, ko kliknete miškine tipke, kadar je kazalec miške na obrazcu, odseku ali kontrolniku. Dogodki miške se zgodijo tudi takrat, ko premaknete kazalec miške na obrazec, odsek ali kontrolnik.
Tipkovnični dogodki
Če pritisnete in sprostite tipko, ko ima krmilnik na obrazcu fokus (ali uporabite dejanje SendKeys ali izjava, če želite poslati kombinacijo tipk), se zgodi naslednje zaporedje dogodkov:
KeyDown KeyPress KeyUp
Ko pritisnete in spustite tipko ali pošljete pritisk tipke v nabor znakov ANSI, se zgodijo dogodki KeyDown, KeyPress in KeyUp . Če pritisnete in pridržite tipko ANSI, sta dogodka KeyDown in KeyPress zaporedoma izmenična (KeyDown, KeyPress, KeyDown, KeyPress in tako naprej), dokler tipke ne sprostite; se zgodi dogodek KeyUp .
Če pritisnete in sprostite ne-ANSI tipko, se zgodita dogodka KeyDown in KeyUp. Če pritisnete in držite pritisnjeno ne-ANSI tipko, se dogodek KeyDown ponavlja, dokler tipke ne sprostite; nato se zgodi dogodek KeyUp.
Če pritisk tipke sproži drug dogodek za kontrolnik, se ta zgodi po dogodku KeyPress, vendar pred dogodkom KeyUp. Če na primer pritisnjena tipka spremeni besedilo v polju z besedilom, pri čemer sproži dogodek Change, se zgodi to zaporedje dogodkov:
KeyDown KeyPress Change KeyUp
Če pritisk tipke povzroči premik fokusa iz enega na drugi kontrolnik, se za prvi kontrolnik zgodi dogodek KeyDown, za drugi kontrolnik pa se zgodita dogodka KeyPress in KeyUp. Če na primer spremenite podatke v kontrolniku in nato pritisnete tipko TAB, da se premaknete na naslednji kontrolnik, se zgodi naslednje zaporedje dogodkov:
-
Prvi kontrolnik:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Drugi kontrolnik:
Vnesite GotFocus KeyPress KeyUp
Dogodki miške
Če kliknete in spustite miškino tipko, ko je kazalec miške na kontrolniku na obrazcu, se za kontrolnik zgodi naslednje zaporedje dogodkov:
MouseDown MouseUp Click
Če ima kontrolnik fokus in kliknete drug kontrolnik, da bi fokus premaknili v ta drug kontrolnik, se zgodi to zaporedje dogodkov:
-
Prvi kontrolnik:
Izhod LostFocus
-
Drugi kontrolnik:
Vnesite GotFocus MouseDown MouseUp Click
Če se premaknete v drug zapis in nato kliknete kontrolnik, se zgodi tudi dogodek Current za obrazec pred dogodkom Enter za kontrolnik.
Če dvokliknete kontrolnik, se zgodita dogodka Click in DblClick. Če na primer dvokliknete kontrolnik, ki ni ukazni gumb, se za kontrolnik izvede naslednje zaporedje dogodkov:
MouseD own MouseUp Click DblClick MouseUp
Ko dvokliknete ukazni gumb, se izvede zgornje zaporedje dogodkov, ki mu sledi dodatni dogodek Click.
Dogodek MouseMove za obrazec, odsek ali kontrolnik se zgodi, ko miškin kazalec premaknete prek obrazca, odseka ali kontrolnika. Ta dogodek je neodvisen od drugih dogodkov miške.
Vrstni red dogodkov za poročila in odseke poročila
Dogodki se zgodijo za poročila in odseke poročila, ko odprete poročilo, da bi ga natisnili ali si ga predogledali, oziroma ko poročilo zaprete.
Dogodki za poročila
Ko odprete poročilo za tiskanje ali predogled in pozneje zaprete poročilo ali pa se premaknete na drug zavihek predmeta v Accessu, se za poročilo izvede naslednje zaporedje dogodkov:
Odpri Aktiviraj Zapri Deactivate
Ko preklopite med dvema odprtima poročiloma, se dogodek Deactivate zgodi za prvo poročilo, dogodek Activate pa se zgodi za drugo poročilo.
Deactivate (poročilo1) Activate (poročilo2)
Dogodek Deactivate za poročilo se prav tako zgodi, ko preklopite z obrazca na drugi zavihek predmeta v Accessu. Vendar se dogodek Deactivate ne zgodi, ko preklopite na pogovorno okno, obrazec, katerega lastnost PopUp je nastavljena na Da, ali na okno v drugem programu.
Ko odprete poročilo, ki je osnovano na poizvedbi, Access sproži dejanje Open za poročilo, preden zažene temeljno poizvedbo. Kot rezultat lahko nastavite kriterije za poročilo z uporabo makra ali dogodkovne procedure, ki se odzove na dogodek Open. Makro ali dogodkovna procedura na primer lahko odpre pogovorno okno po meri, v katerega vnesete kriterije poročila.
Dogodki za odseke poročila
Ko natisnete ali si predogledate poročilo, se dogodka Format in Print zgodita za odseke poročila po dogodkih Open in Activate za poročilo in pred dogodkoma Close ali Deactivate poročila:
Odpiranje (poročilo) Aktiviranje (poročilo) Oblikovanje (odsek poročila) Tiskanje (odsek poročila) Zapri (poročilo) Deactivate (poročilo)
Varnost S pogledom poročila lahko omogočite filtriranje poročil uporabnikov. Toda v nasprotju s predogledom tiskanja sedogodka Oblika in Natisni v katerem koli odseku ne zgodita v pogledu poročila. To velja tudi za rezultate funkcije VBA in uporabniško določene postopke, ki se prikažejo v kontrolnikih (kot so napisi oznak, stanje prikaza, pogojno oblikovanje, spreminjanje velikosti kontrolnikov in tako naprej) v teh dogodkih. Zato kode v tem primeru ne uporabljajte za oblikovanje, skrivanje ali tiskanje zaupnih podatkov, ki bi lahko bili izpostavljeni. Priporočamo, da vnaprej filtrirate podatke ali onemogočite predogled poročila tako, da nastavite lastnost AllowReportView na Ne.
Poleg tega se lahko med ali po oblikovanju, vendar pred dogodkom Print, zgodijo ti dogodki:
-
Dogodek Retreat se zgodi, ko se Access vrne v prejšnji odsek med oblikovanjem poročila.
-
Dogodek NoData se zgodi, če poročilo ne prikazuje nobenih odsekov.
-
Dogodek Page se zgodi po oblikovanju, vendar pred tiskanjem. Ta dogodek lahko uporabite, če želite prilagoditi videz natisnjenega poročila.