Applies ToAccess за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Едно действие, като например преместване от една контрола в обект към друга, може да задейства няколко различни събития, които възникват в определена последователност. Важно е да знаете кога и в какъв ред възникват събитията, защото това може да повлияе на начина и времето на изпълнение на вашите макроси или процедури за обработка на събития. Ако например има две процедури за обработка на събития, които трябва да се изпълнят в определен ред, ще искате да се уверите, че събитията, с които са свързани, възникват в същия ред.

В тази статия

Ред на събитията за контроли във формуляри

За контролите във формулярите възникват събития, когато преместите фокуса върху контролата и когато промените и актуализирате данни в контролата.

Забележка: Microsoft Office Access показва малко по-различно имената на събитията в редактора на Visual Basic, отколкото в листа със свойства и конструктора на макроси. Например събитието, наречено При получаване на фокус в листа със свойства на формуляра и в конструктора на макроси, се нарича GotFocus в редактора на Visual Basic. В примерите в тази статия се използва форматът на Visual Basic for Applications (VBA) за имената на събитията.

Преместване на фокуса върху контрола

Когато преместите фокуса върху контрола във формуляр (например като отворите формуляр, който съдържа една или повече активни контроли, или като преместите фокуса върху друга контрола в същия формуляр), събитията Enter и GotFocus възникват в следния ред:

Enter стрелка GotFocus

Когато отворите формуляр, събитията Enter и GotFocus възникват след събитията, свързани с отварянето на формуляра (като например Open, Activate и Current), както следва:

Open (формуляр) стрелкаActivate (формуляр) стрелкаCurrent (формуляр) стрелкаEnter (контрола) стрелкаGotFocus (контрола)

Когато фокусът напусне контрола във формуляр (например когато затворите формуляр, който съдържа една или повече активни контроли, или когато се преместите към друга контрола в същия формуляр), събитията Exit и LostFocus възникват в следния ред:

Изход от стрелка LostFocus

Когато затворите формуляр, събитията Exit и LostFocus възникват преди събитията, свързани със затварянето на формуляра (като например Unload, Deactivate и Close), както следва:

Exit (контрола) стрелкаLostFocus (контрола) стрелкаUnload (формуляр) стрелкаDeactivate (формуляр) стрелкаClose (формуляр)

Промяна и актуализиране на данни в контрола

Когато въведете или промените данни в контрола във формуляр и след това преместите фокуса върху друга контрола, ще възникнат събитията BeforeUpdate и AfterUpdate:

BeforeUpdate стрелка Afte rUpdate

Събитията Exit и LostFocus за контролата, чиято стойност се променя, възникват след събитията BeforeUpdate и AfterUpdate:

BeforeUpdate стрелка AfterUpdate стрелка , стрелка LostFocus

Когато промените текста в текстово поле или в раздела за текстово поле на разгъващ се списък, ще възникне събитието Change. Това събитие възниква винаги когато се променя съдържанието на контролата, но преди да преместите фокуса върху друга контрола или запис (и следователно преди да възникнат събитията BeforeUpdate и AfterUpdate). За всеки клавиш, който натиснете в текстово поле или в раздела за текстово поле на разгъващ се списък, възниква следната последователност от събития:

KeyDown стрелка KeyPress стрелка Dirty стрелка Change стрелка KeyUp

Събитието NotInList възниква, когато въведете стойност в разгъващ се списък, която не може да бъде намерена в него, и след това се опитате да преместите фокуса върху друга контрола или запис. Събитието NotInList възниква след събитията за клавиатурата и събитията Change за разгъващия се списък, но преди събитията за всяка друга контрола или за формуляра. Ако свойството LimitToList на разгъващия се списък е с настройка Да, събитието Error за формуляра ще възникне незабавно след събитието NotInList:

KeyDown стрелка KeyPress стрелка dirty стрелка error change стрелка KeyUp стрелка NotInList 0

Най-горе на страницата

Ред на събитията за записи във формуляри

За записите във формулярите възникват събития, когато преместите фокуса върху различен запис, актуализирате данните в запис, изтриете съществуващ запис или записи или създадете нов запис.

Преместване на фокуса върху записи и актуализиране на данните в записи

Когато преместите фокуса върху съществуващ запис във формуляр, въведете или промените данните в записа и след това преместите фокуса върху друг запис, за формуляра ще възникне следната последователност от събития:

Current (формуляр) стрелкаBeforeUpdate (формуляр) стрелкаAfterUpdate (формуляр) стрелкаCurrent (формуляр)

Когато излезете от записа, чиито данни сте променили, но преди да влезете в следващия запис, събитията Exit и LostFocus ще възникнат за контролата, в която се намира фокусът. Тези събития възникват след събитията BeforeUpdate и AfterUpdate за формуляра, както следва:

BeforeUpdate (формуляр) стрелкаAfterUpdate (формуляр) стрелкаExit (контрола) стрелкаLostFocus (контрола) стрелкаCurrent (формуляр)

Докато премествате фокуса между контролите във формуляр, ще възникват събития за всяка контрола. Например посочените по-долу последователности от събития възникват, когато направите следното:

  • Отваряне на формуляр и промяна на данните в контрола:

    Current (формуляр) стрелкаEnter (контрола) стрелкаGotFocus (контрола) стрелкаBeforeUpdate (контрола) стрелкаAfterUpdate (контрола)

  • Преместване на фокуса върху друга контрола:

    Exit (контрола1) стрелкаLostFocus (контрола1) стрелкаEnter (контрола2) стрелкаGotFocus (контрола2)

  • Преместване на фокуса върху друг запис:

    BeforeUpdate (формуляр) стрелкаAfterUpdate (формуляр) стрелкаExit (контрола2) стрелкаLostFocus (контрола2) стрелкаCurrent (формуляр)

Изтриване на записи

Когато изтриете запис, посочените по-долу събития ще възникнат за формуляра и Microsoft Office Access ще покаже диалогов прозорец за потвърждение на изтриването:

Изтриване на стрелка BeforeDelConfirm стрелка AfterDelConfirm

Ако отмените събитието Delete, събитията BeforeDelConfirm и AfterDelConfirm няма да възникнат и диалоговият прозорец няма да се покаже.

Създаване на нов запис

Когато преместите фокуса върху нов (празен) запис във формуляр и след това създадете нов запис, като въведете данни в контрола, ще възникне следната последователност от събития:

Current (формуляр) стрелкаEnter (контрола) стрелкаGotFocus (контрола) стрелкаBeforeInsert (формуляр) стрелкаAfterInsert (формуляр)

Събитието BeforeInsert (формуляр) се активира веднага щом започнете да въвеждате в контролата. Събитието AfterInsert (формуляр) се активира, след като излезете от записа.

Събитията BeforeUpdate и AfterUpdate за контролата във формуляра и за новия запис възникват след събитието BeforeInsert и преди събитието AfterInsert.

Най-горе на страницата

Ред на събитията за формуляри и подформуляри

За формулярите възникват събития, когато отворите или затворите формуляр, когато се придвижите между формуляри или когато работите с данните във формуляр или подформуляр.

Отваряне и затваряне на формуляр

Когато отворите формуляр, за формуляра ще възникне следната последователност от събития:

Отваряне стрелка зареждане стрелка преоразмеряване стрелка Активиране стрелка текуща версия

Ако няма активни контроли във формуляра, събитието GotFocus за формуляра ще възникне след събитието Activate, но преди събитието Current.

Когато затворите формуляр, за формуляра ще възникне следната последователност от събития:

Изключване стрелка дезактивиране стрелка затваряне

Ако няма активни контроли във формуляра, събитието LostFocus за формуляра ще възникне след събитието Unload, но преди събитието Deactivate.

Придвижване между формуляри

Когато превключите между два отворени формуляра, събитието Deactivate възниква за първия формуляр, а събитието Activate възниква за втория формуляр:

Deactivate (формуляр1) стрелкаActivate (формуляр2)

Събитието Deactivate за формуляр възниква и когато превключите от формуляра към друг раздел на обект в Access. Събитието Deactivate обаче не възниква, когато превключите към диалогов прозорец, към формуляр, за който свойството PopUp е с настройка Да, или към прозорец в друга програма.

Забележка:  Събитието Open не възниква, ако преместите фокуса върху формуляр, който вече е отворен, дори ако сте преместили фокуса върху този формуляр чрез изпълнение на действие OpenForm.

Работа с данни във формуляр

Събития за формуляра и контролите възникват, докато се придвижвате между записите във формуляра и променяте данните. Например, когато отворите формуляр за първи път, ще възникне следната последователност от събития:

Open (формуляр) стрелкаLoad (формуляр) стрелкаResize (формуляр) стрелкаActivate (формуляр) стрелкаCurrent (формуляр) стрелкаEnter (контрола)0 GotFocus (контрола)

По подобен начин, когато затворите формуляр, ще възникне следната последователност от събития:

Exit (контрола) стрелкаLostFocus (контрола) стрелкаUnload (формуляр) стрелкаDeactivate (формуляр) стрелкаClose (формуляр)

Ако сте променили данни в контрола, събитията BeforeUpdate и AfterUpdate както за контролата, така и за формуляра ще възникнат преди събитието Exit за контролата.

Работа с подформуляри

Когато отворите формуляр, съдържащ подформуляр, подформулярът и неговите записи се зареждат преди главния формуляр. Затова събитията за подформуляра и неговите контроли (като например Open, Current, Enter и GotFocus) възникват преди събитията за формуляра. Събитието Activate обаче не възниква за подформуляри. Следователно отварянето на главен формуляр задейства събитие Activate само за главния формуляр.

По подобен начин, когато затворите формуляр, съдържащ подформуляр, подформулярът и неговите записи се освобождават след формуляра. Събитието Deactivate не възниква за подформуляри. Следователно затварянето на главен формуляр задейства събитие Deactivate само за главния формуляр. Събитията за контролите, формуляра и подформуляра възникват в следния ред:

  1. Събития за контролите на подформуляра (като например Exit и LostFocus)

  2. Събития за контролите на формуляра (включително контролите на подформуляра)

  3. Събития за формуляра (като например Deactivate и Close)

  4. Събития за подформуляра

Забележка: Тъй като събитията за подформуляр възникват след затварянето на главния формуляр, някои събития, като например отмяна на затварянето на главния формуляр от събитие в подформуляра, няма да възникнат. Може да се наложи да преместите тези типове тестове за проверка към събитие в главния формуляр.

Най-горе на страницата

Ред на събитията за натискания на клавиши и щраквания с мишката

За формулярите и контролите възникват събития за клавиатурата, когато натиснете клавиши или изпратите команди за натиснати клавиши, докато фокусът се намира във формуляра или контролата. За формулярите, разделите на формулярите и контролите във формулярите възникват събития за мишката, когато натиснете бутоните на мишката, докато показалецът се намира върху формуляр, раздел или контрола. Събития за мишката възникват и когато преместите показалеца върху формуляр, раздел или контрола.

Събития за клавиатурата

Когато натиснете и освободите клавиш, докато фокусът се намира върху контрола във формуляр, (или използвате действието SendKeys или команда за изпращане на натиснат клавиш), ще възникне следната последователност от събития:

KeyDown стрелка KeyPress стрелка KeyUp

Когато натиснете и освободите клавиш или изпратите натискане на клавиш в набор от знаци АNSI, всички събития KeyDown, KeyPress и KeyUp възникват. Ако натиснете и задържите натиснат ANSI клавиш, събитията KeyDown и KeyPress се редуват многократно (KeyDown, KeyPress, KeyDown, KeyPress и т.н.), докато не освободите клавиша; след това ще възникне събитието KeyUp .

Ако натиснете и освободите не-ANSI клавиш, ще възникнат събитията KeyDown и KeyUp. Ако натиснете и задържите не-ANSI клавиш, събитието KeyDown ще възниква многократно, докато не освободите клавиша, след което ще възникне събитието KeyUp.

Ако натискането на клавиш задейства друго събитие за контрола, това събитие ще възникне след събитието KeyPress, но преди събитието KeyUp. Ако например натискането на клавиш променя текста в текстово поле, което задейства събитие Change, ще възникне следната последователност от събития:

KeyDown стрелка KeyPress стрелка Change стрелка KeyUp

Ако натискането на клавиш предизвиква преместване на фокуса от една контрола към друга, събитието KeyDown ще възникне за първата контрола, докато събитията KeyPress и KeyUp ще възникнат за втората контрола. Ако например промените данни в контрола и след това натиснете клавиша за табулация, за да се придвижите към следващата контрола, ще възникне следната последователност от събития:

  • Първа контрола:

    KeyDown стрелка BeforeUpdate стрелка AfterUpdate стрелка Exit стрелка LostFocus

  • Втора контрола:

    Enter стрелка GotFocus стрелка KeyPress стрелка KeyUp

Събития за мишката

Когато натиснете и отпуснете бутон на мишката, докато показалецът се намира върху контрола във формуляр, за контролата ще възникне следната последователност от събития:

MouseDown стрелка MouseUp стрелка Click

Ако фокусът се намира в контрола и щракнете върху друга контрола, за да преместите фокуса в нея, ще възникне следната последователност от събития:

  • Първа контрола:

    Изход от стрелка LostFocus

  • Втора контрола:

    Въведете стрелка GotFocus стрелка MouseDown стрелка MouseUp стрелка щракване

Ако се придвижите към друг запис и след това щракнете върху контрола, събитието Current за формуляра също ще възникне преди събитието Enter за контролата.

Двукратното щракване върху контрола води до възникването на събитията Click и DblClick. Например, когато щракнете двукратно върху контрола, различна от команден бутон, за контролата ще възникне следната последователност от събития:

MouseUp стрелка#x2 Щракнете стрелкаDblClick стрелкаMouseUp стрелка

Когато щракнете двукратно върху команден бутон, ще възникне предходната последователност от събития, последвана от второ събитие Click.

Събитието MouseMove за формуляр, раздел или контрола възниква, когато преместите показалеца на мишката над формуляра, раздела или контролата. Това събитие е независимо от другите събития за мишката.

Най-горе на страницата

Ред на събитията за отчети и раздели на отчети

За отчетите и разделите на отчетите възникват събития, когато отворите отчет, за да го отпечатате или прегледате, или когато затворите отчет.

Събития за отчети

Когато отворите отчет, за да го отпечатате или прегледате, и по-късно затворите отчета или преминете към друг раздел на обект в Access, за отчета ще възникне следната последователност от събития:

Отвори стрелка Активиране стрелка затваряне стрелка дезактивиране

Когато превключите между два отворени отчета, събитието Deactivate възниква за първия отчет, а събитието Activate възниква за втория отчет:

Deactivate (отчет1) стрелкаActivate (отчет2)

Събитието Deactivate за отчет възниква и когато превключите от отчета към друг раздел на обект в Access. Събитието Deactivate обаче не възниква, когато превключите към диалогов прозорец, към формуляр, за който свойството PopUp е с настройка Да, или към прозорец в друга програма.

Когато отворите отчет, базиран на заявка, Access задейства събитието Open за отчета, преди да изпълни съответната заявка. В резултат на това можете да зададете критериите за отчета, като използвате макрос или процедура за обработка на събитие, отговарящи на събитието Open. Например макросът или процедурата за обработка на събитие може да отваря диалогов прозорец по избор, в който да въведете критериите за отчета.

Събития за раздели на отчет

Когато отпечатвате или преглеждате отчет, събитията Format и Print за разделите на отчета възникват след събитията Open и Activate за отчета и преди събитията Close или Deactivate за отчета:

Open (отчет) стрелкаActivate (отчет) стрелкаFormat (секция на отчет) стрелкаPrint (секция на отчет) стрелкаClose (отчет) стрелкаDeactivate (отчет)

Защита    Можете да използвате изгледа за отчет, за да разрешите потребителско филтриране на отчети. Но за разлика от визуализацията на печата, събитията Format и Print в който и да е раздел не възникват в изглед за отчет. Това се отнася и за резултатите от функциите на VBA и дефинираните от потребителя процедури, които се показват в контроли (като надписи на етикети, състояние на показване, условно форматиране, преоразмеряване на контроли и т.н.) в рамките на тези събития. Следователно не използвайте код в това събитие, за да форматирате, скривате или отпечатвате поверителни данни, които може да се разкрият. Препоръчваме предварително филтриране на данните или забраняване на "Визуализация на отчет", като зададете свойството AllowReportView на "Не".

Освен това посочените по-долу събития могат да възникнат по време на или след форматиране, но преди събитието Print:

  • Събитието Retreat възниква, когато Access се връща към предходен раздел по време на форматирането на отчет.

  • Събитието NoData възниква, ако няма показани от отчета записи.

  • Събитието Page възниква след форматирането, но преди отпечатването. Можете да използвате това събитие, за да персонализирате изгледа на отпечатания отчет.

Най-горе на страницата

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.