O singură acțiune, cum ar fi mutarea de la un control al unui obiect la alt control, poate declanșa mai multe evenimente, care au loc într-o anumită ordine. Este important să știți când au loc evenimente și în ce ordine, deoarece acest lucru poate influența modul și momentul în care se execută macrocomenzile sau procedurile eveniment. De exemplu, dacă există două proceduri eveniment care trebuie să ruleze într-o anumită ordine, se recomandă să vă asigurați că evenimentele cu care sunt asociate au loc în aceeași ordine.
În acest articol
Ordinea evenimentelor pentru controale din formulare
Evenimentele pentru controalele din formulare au loc atunci când mutați focalizare la un alt control și atunci când modificați și actualizați date într-un control.
Notă: Microsoft Office Access afișează numele de evenimente ușor diferit în Visual Basic Editor decât în foaia de proprietăți și în Generatorul de macrocomenzi. De exemplu, evenimentul denumit La Primire Focalizare în foaia de proprietăți a formularului și în Generatorul de macrocomenzi este denumit GotFocus în Visual Basic Editor. Exemplele din acest articol utilizează formatul Visual Basic for Applications (VBA) pentru numele de evenimente.
Mutarea focalizării la un control
Atunci când mutați focalizarea la un control dintr-un formular (de exemplu, prin deschiderea unui formular care conține unul sau mai multe controale active sau prin mutarea focalizării la alt control din același formular), evenimentele Enter și GotFocus apar în următoarea ordine:
Introduceți GotFocus
Atunci când deschideți un formular, evenimentele Enter și GotFocus au loc după evenimentele asociate cu deschiderea formularului (cum ar fi Open, Activate și Current), după cum urmează:
Open (formular) Activate (formular) Current (formular) Enter (control) GotFocus (control)
Atunci când focalizarea părăsește un control dintr-un formular (de exemplu, atunci când închideți un formular care conține unul sau mai multe controale active sau când treceți la alt control din același formular), evenimentele Exit și LostFocus apar în următoarea ordine:
Ieșire din LostFocus
Atunci când închideți un formular, evenimentele Exit și LostFocus au loc înainte de evenimentele asociate cu închiderea formularului (cum ar fi Unload, Deactivate și Close), după cum urmează:
Exit (control) LostFocus (control) Unload (formular) Deactivate (formular) Close (formular)
Modificarea și actualizarea datelor dintr-un control
Atunci când introduceți sau modificați date într-un control dintr-un formular și apoi mutați focalizarea la alt control, evenimentele BeforeUpdate și AfterUpdate au loc astfel:
BeforeUpdate Afte rUpdate
Evenimentele Exit șiLostFocus pentru un control a cărui valoare se schimbă au loc după evenimentele BeforeUpdate și AfterUpdate:
BeforeUpdate AfterUpdate Exit LostFocus
Atunci când modificați textul dintr-o casetă text sau din secțiunea casetă text a unei casete combo, are loc evenimentul Change. Acest eveniment are loc ori de câte ori se modifică conținutul controlului, dar înainte de a muta focalizarea la un alt control sau la altă înregistrare (și, prin urmare, înainte să aibă loc evenimentele BeforeUpdate și AfterUpdate). Următoarea secvență de evenimente are loc pentru fiecare tastă pe care o apăsați într-o casetă text sau în secțiunea casetă text a unei casete combo:
KeyDown KeyPress Modificare Modificare taste
Evenimentul NotInList are loc după ce introduceți într-o casetă combo o valoare care nu se găsește în lista casetei combo, iar apoi încercați să mutați focalizarea la alt control sau altă înregistrare. Evenimentul NotInList are loc după evenimentele de tastatură și evenimentele Change pentru caseta combo, dar înainte de evenimentele pentru orice alt control sau formular. Dacă proprietatea LimitareLaListă a casetei combo este setată la Da, evenimentul Error pentru formular are loc imediat după evenimentul NotInList:
KeyDown KeyPress Modificare #x6 KeyUp NotInList 0 Eroare
Ordinea evenimentelor pentru înregistrări din formulare
Evenimentele pentru înregistrări din formulare au loc atunci când mutați focalizare la altă înregistrare, actualizați date într-o înregistrare, ștergeți o înregistrare sau înregistrări existente sau creați o nouă înregistrare.
Mutarea focalizării la înregistrări și actualizarea datelor în înregistrări
Când mutați focalizarea la o înregistrare existentă într-un formular, introduceți sau modificați date din înregistrare, iar apoi mutați focalizarea la altă înregistrare, are loc următoarea secvență de evenimente pentru formular:
Current (formular) BeforeUpdate (formular) AfterUpdate (formular) Current (formular)
Atunci când ieșiți din înregistrarea ale cărei date s-au modificat, dar înainte de a intra în următoarea înregistrare, au loc evenimentele Exit și LostFocus pentru controlul care are focalizarea. Aceste evenimente au loc după evenimentele BeforeUpdate și AfterUpdate pentru formular, după cum urmează:
BeforeUpdate (formular) AfterUpdate (formular) Exit (control) LostFocus (control) Current (formular)
Pe măsură ce mutați focalizarea între controalele dintr-un formular, au loc evenimente pentru fiecare control. De exemplu, următoarele secvențe de evenimente au loc atunci când efectuați următoarele:
-
Deschideți un formular și modificați datele într-un control:
Current (formular) Enter (control) GotFocus (control) BeforeUpdate (control) AfterUpdate (control)
-
Mutați focalizarea la alt control:
Ieșire (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
Mutați focalizarea la altă înregistrare:
BeforeUpdate (formular) AfterUpdate (formular) Exit (control2) LostFocus (control2) Current (formular)
Ștergerea înregistrărilor
Atunci când ștergeți o înregistrare, au loc evenimentele următoare pentru formular, iar Microsoft Office Access afișează o casetă de dialog care vă solicită să confirmați ștergerea:
Ștergerea BeforeDelConfirm AfterDelConfirm
Dacă anulați evenimentul Delete, evenimentele BeforeDelConfirm și AfterDelConfirm nu au loc, iar caseta de dialog nu se afișează.
Crearea unei înregistrări noi
Atunci când mutați focalizarea la o înregistrare nouă (necompletată) dintr-un formular, iar apoi creați o înregistrare nouă tastând date într-un control, are loc următoarea secvență de evenimente:
Current (formular) Enter (control) GotFocus (control) BeforeInsert (formular) AfterInsert (formular)
Evenimentul BeforeInsert (formular) se declanșează imediat ce începeți să tastați în control. Evenimentul AfterInsert (formular) se declanșează după ce părăsiți înregistrarea.
Evenimentele BeforeUpdate șiAfterUpdate pentru controalele din formular și pentru noua înregistrare au loc după evenimentul BeforeInsert și înainte de evenimentul AfterInsert.
Ordinea evenimentelor pentru formulare și subformulare
Evenimentele pentru formulare au loc atunci când deschideți sau închideți un formular, vă deplasați de la un formular la altul sau lucrați cu date dintr-un formular sau subformular.
Deschiderea și închiderea unui formular
Atunci când deschideți un formular are loc următoarea secvență de evenimente pentru formular:
Deschideți Încărcare Redimensionare Activare Curent
Dacă nu există controale active în formular, evenimentul GotFocus are loc pentru formular după evenimentul Activate, dar înainte de evenimentul Current.
Atunci când închideți un formular are loc următoarea secvență de evenimente pentru formular:
Anularea încărcării dezactivarea închidere
Dacă nu există controale active pe formular, evenimentul LostFocus are loc pentru formular după evenimentul Unload, dar înainte de evenimentul Deactivate.
Deplasarea de la un formular la altul
Atunci când comutați între două formulare deschise, evenimentul Deactivate are loc pentru primul formular, iar evenimentul Activate are loc pentru al doilea formular:
Dezactivare (formular1) Activare (formular2)
Evenimentul Dezactivare pentru un formular are loc și atunci când comutați de la un formular la altă filă de obiect în Access. Cu toate acestea, evenimentul Deactivate nu are loc atunci când comutați la o casetă de dialog, la un formular a cărui proprietate PopUp este setată la Da sau la o fereastră din alt program.
Notă: Evenimentul Open nu are loc dacă mutați focalizarea la un formular care este deja deschis, chiar dacă ați mutat focalizarea la acel formular prin efectuarea unei acțiuni OpenForm.
Lucrul cu datele dintr-un formular
Evenimentele de formular și de control au loc atunci când vă deplasați de la o înregistrare la alta din formular și modificați date. De exemplu, atunci când deschideți prima dată un formular, are loc următoarea secvență de evenimente:
Deschidere (formular) Încărcare (formular) Redimensionare (formular) Activare (formular) Current (formular) Enter (control)0 GotFocus (control)
În mod asemănător, atunci când închideți un formular, are loc următoarea secvență de evenimente:
Exit (control) LostFocus (control) Unload (formular) Deactivate (formular) Close (formular)
Dacă ați modificat datele într-un control, evenimentele BeforeUpdate și AfterUpdate atât pentru control, cât și pentru formular au loc înainte de evenimentul Exit pentru control.
Lucrul cu subformulare
Atunci când deschideți un formular care conține un subformular, subformularul și înregistrările sale sunt încărcate înaintea formularului principal. Astfel, evenimentele pentru subformular și controalele sale (cum ar fi Open, Current, Enter și GotFocus) au loc înainte de evenimentele pentru formular. Cu toate acestea, evenimentul Activate nu are loc pentru subformulare. Prin urmare, deschiderea unui formular principal declanșează un eveniment Activate numai pentru formularul principal.
În mod similar, atunci când închideți un formular care conține un subformular, subformularul și înregistrările sale sunt descărcate după formular. Evenimentul Deactivate nu are loc pentru subformulare. Prin urmare, închiderea unui formular principal declanșează un eveniment Deactivate numai pentru formularul principal. Evenimentele pentru controale, formular și subformular au loc în următoarea ordine:
-
Evenimente pentru controalele subformularului (cum ar fi Exit și LostFocus)
-
Evenimente pentru controalele de formular (inclusiv controlul de subformular)
-
Evenimente pentru formular (cum ar fi Deactivate și Close)
-
Evenimente pentru subformular
Notă: Deoarece evenimentele pentru un subformular au loc după ce formularul principal este închis, anumite evenimente, cum ar fi anularea închiderii formularului principal de la un eveniment din subformular, nu vor avea loc. Poate fi necesar să mutați aceste tipuri de teste de validare la un eveniment din formularul principal.
Ordinea evenimentelor pentru apăsări de taste și clicuri de mouse
Evenimentele de la tastatură pentru formulare și controale au loc atunci când apăsați taste sau trimiteți secvențe de taste în timp ce formularul sau controlul are focalizare. Evenimentele de la mouse pentru formulare, secțiuni de formular și controale din formulare au loc atunci când faceți clic pe butoanele mouse-ului în timp ce indicatorul mouse-ului este pe un formular, o secțiune sau un control. Evenimentele de la mouse au loc, de asemenea, atunci când deplasați indicatorul mouse-ului peste o formă, o secțiune sau un control.
Evenimente de la tastatură
Atunci când apăsați și eliberați o tastă în timp ce un control dintr-un formular are focalizarea (sau utilizează acțiunea SendKeys sau declarație pentru a trimite o secvență de taste), are loc următoarea secvență de evenimente:
KeyDown KeyPress KeyUp
Atunci când apăsați și eliberați o tastă sau trimiteți o secvență de taste în set de caractere ANSI, au loc toate evenimentele KeyDown, KeyPress și KeyUp. Dacă apăsați și țineți apăsată o tastă ANSI, evenimentele KeyDown și KeyPress alternează în mod repetat (KeyDown, KeyPress, KeyDown, KeyPressși așa mai departe) până când eliberați tasta; apoi are loc evenimentul KeyUp.
Dacă apăsați și eliberați o tastă non-ANSI, au loc evenimentele KeyDown și KeyUp. Dacă apăsați și mențineți apăsată o tastă non-ANSI, evenimentul KeyDown are loc în mod repetat până când eliberați tasta, iar apoi are loc evenimentul KeyUp.
Dacă apăsarea unei taste declanșează alt eveniment pentru un control, evenimentul respectiv are loc după evenimentul KeyPress, dar înainte de evenimentul KeyUp. De exemplu, dacă o secvență de taste modifică textul într-o casetă text, ceea ce declanșează un eveniment Change, are loc următoarea secvență de evenimente:
KeyDown KeyPress Change KeyUp
Dacă o secvență de taste determină mutarea focalizării de la un control la alt control, evenimentul KeyDown are loc pentru primul control, în timp ce evenimentele KeyPress și KeyUp au loc pentru al doilea control. De exemplu, dacă modificați datele într-un control, iar apoi apăsați tasta TAB pentru a trece la următorul control, au loc următoarele secvențe de evenimente:
-
Primul control:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Al doilea control:
Introduceți GotFocus KeyPress KeyUp
Evenimente de la mouse
Atunci când faceți clic și eliberați un buton de mouse în timp ce indicatorul mouse-ului este deasupra unui control dintr-un formular, are loc următoarea secvență de evenimente pentru control:
MouseDown MouseUp Clic
Dacă un control are focalizarea și faceți clic pe alt control pentru a muta focalizarea la acest al doilea control, au loc următoarele secvențe de evenimente:
-
Primul control:
Ieșire din LostFocus
-
Al doilea control:
Introduceți GotFocus MouseDown MouseUp clic
Dacă treceți la altă înregistrare, iar apoi faceți clic pe un control, are loc, de asemenea, evenimentul Current pentru formular înainte de evenimentul Enter pentru control.
Dacă se face dublu clic pe un control, au loc evenimentele Click și DblClick. De exemplu, atunci când faceți dublu clic pe un control, altul decât un buton de comandă, are loc următoarea secvență de evenimente pentru control:
MouseD proprii MouseUp Clic DblClick MouseUp
Atunci când faceți dublu clic pe un buton de comandă, are loc secvența de evenimente precedentă, urmată de un al doilea eveniment Click.
Evenimentul MouseMove pentru un formular, o secțiune sau un control are loc atunci când deplasați indicatorul mouse-ului deasupra formularului, secțiunii sau controlului. Acest eveniment este independent de celelalte evenimente de mouse.
Ordinea evenimentelor pentru rapoarte și secțiuni de raport
Evenimentele pentru rapoarte și secțiuni de raport au loc atunci când deschideți un raport pentru a-l imprima sau a-l previzualiza sau când închideți un raport.
Evenimente pentru rapoarte
Atunci când deschideți un raport pentru a-l imprima sau a-l previzualiza, iar mai târziu închideți raportul sau treceți la altă filă de obiect din Access, are loc următoarea secvență de evenimente pentru raport:
Deschideți Activare Închidere Dezactivare
Atunci când comutați între două rapoarte deschise, evenimentul Deactivate are loc pentru primul raport, iar evenimentul Activate are loc pentru al doilea raport:
Dezactivare (raport1) Activare (raport2)
Evenimentul Deactivate pentru un raport are loc și atunci când comutați de la un raport la altă filă de obiect în Access. Cu toate acestea, evenimentul Deactivate nu are loc atunci când comutați la o casetă de dialog, la un formular a cărui proprietate PopUp este setată la Da sau la o fereastră din alt program.
Atunci când deschideți un raport care se bazează pe o interogare, Access declanșează evenimentul Open pentru raport înainte să execute interogarea subiacentă. Prin urmare, puteți seta criteriile pentru raport utilizând o macrocomandă sau o procedură eveniment care răspunde la evenimentul Deschidere. De exemplu, macrocomanda sau procedura eveniment poate deschide o casetă de dialog particularizată în care introduceți criteriile raportului.
Evenimente pentru secțiuni de raport
Atunci când imprimați sau previzualizați un raport, evenimentele Format și Print pentru secțiunile de raport au loc după evenimentele Open și Activate pentru raport și înainte de evenimentele Close sau Deactivate ale raportului:
Deschidere (raport) Activare (raport) Format (secțiune de raport) Imprimare (secțiune de raport) Închidere (raport) Dezactivare (raport)
Securitate Puteți utiliza Vizualizarea raport pentru a activa filtrarea rapoartelor de către utilizatori. Dar, spre deosebire de Examinare înaintea imprimării, evenimentele Format și Imprimare din orice secțiune nu au loc în Vizualizarea raport. Acest lucru se aplică și rezultatelor funcției VBA și procedurilor definite de utilizator care se afișează în controale (cum ar fi legendele de etichete, starea de afișare, formatarea condiționată, redimensionarea controalelor și așa mai departe) din acele evenimente. Prin urmare, nu utilizați cod în acest eveniment pentru a formata, ascunde sau imprima date confidențiale, care pot deveni expuse. Vă recomandăm să pre-filtrați datele sau să dezactivați Previzualizare raport setând proprietatea AllowReportView la Nu.
În plus, pot avea loc următoarele evenimente în timpul sau după formatare, însă înainte de evenimentul Print:
-
Evenimentul Retreat are loc atunci când Access revine la o secțiune anterioară în timpul formatării raportului.
-
Evenimentul NoData are loc dacă nu există înregistrări afișate de raport.
-
Evenimentul Page are loc după formatare, dar înainte de imprimare. Puteți utiliza acest eveniment pentru a particulariza aspectul raportului imprimat.