Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Одно действие, например перемещение с одного элемента управления объекта к другому, может запустить несколько разных событий, которые происходят в определенной последовательности. Важно знать, когда и в каком порядке возникают события, так как это может повлиять на то, как и когда выполняются макросы или процедуры обработки событий. Например, если есть две процедуры обработки событий, которые должны выполняться в определенном порядке, нужно убедитесь в том, что в таком же порядке возникают события, связанные с ними.

В этом разделе...

Порядок событий элементов управления в форме

События элемента управления возникают в форме при переводе фокуса на элемент управления и при изменении или обновлении данных в элементе управления.

Примечание: Microsoft Office Access отображает имена событий в редакторе Visual Basic немного не так, как на странице свойств и в построителе макросов. Например, событие, которое на странице свойств и в построителе макросов называется On Got Focus, в редакторе Visual Basic называется GotFocus. В примерах ниже для имен событий используется формат Visual Basic для приложений (VBA).

Перемещение фокуса на элемент управления

При перемещении фокуса на элемент управления в форме (например, при открытии формы, содержащей один или несколько активных элементов управления, или при переходе на другой элемент управления в той же форме) возникают события Enter и GotFocus в следующем порядке:

Введите стрелка GotFocus

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

Открытие (форма) стрелкаАктивация (форма) стрелкаCurrent (form) стрелкаВвод (control) стрелкаGotFocus (control)

При переводе фокуса с элемента управления в форме (например, при закрытии формы, в которой выводятся один или несколько активных элементов управления, или при переходе на другой элемент управления в той же форме) возникают события Exit и LostFocus в следующем порядке:

Выход стрелка LostFocus

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

Выход (управление) стрелкаLostFocus (control) стрелкаВыгрузить (форма) стрелкаДеактивировать (форма) стрелкаЗакрыть (форма)

Изменение и обновление данных в элементе управления

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

BeforeUpdate стрелка Afte rUpdate

Для элемента управления с измененным значением после событий BeforeUpdate и AfterUpdate возникают события Exit и LostFocus:

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

Когда вы изменяете текст, содержащийся в текстовом поле или в поле со списком, возникает событие Change. Оно происходит при любом изменении содержимого элемента управления, причем до перехода фокуса на другой элемент управления или на другую запись (и, следовательно, до возникновения событий BeforeUpdate и AfterUpdate). Если курсор находится в поле, то при нажатии любой клавиши в текстовом поле или поле со списком возникают следующие события:

KeyDown стрелка KeyPress стрелка стрелка Изменить стрелка KeyUp

Событие NotInList возникает, если ввести в поле со списком значение, которого нет в раскрывающемся списке, а затем попытаться переместить фокус на другой элемент управления или запись. Событие NotInList возникает после событий клавиатуры и события Change для поля со списком, но перед событиями других элементов управления или формы. Если свойство LimitToList поля со списком имеет значение Yes, сразу после события NotInList возникает событие Error для формы:

Ошибка 0 KeyDown стрелкаKeyPress стрелкастрелкастрелка стрелка#x8 NotInList

К началу страницы

Порядок событий записей в формах

События записи возникают в форме при переводе фокуса на другую запись, обновлении содержимого записи, удалении существующей записи или записей, а также при создании записи.

Перемещение фокуса между записями и обновление содержимого записей

При переводе фокуса на существующую запись в форме, вводе новых или изменении существующих данных в записи и при переходе на другую запись возникает такая последовательность событий:

Current (form) стрелкаBeforeUpdate (form) стрелкаAfterUpdate (form) стрелкаCurrent (form)

При выходе из измененной записи, но до входа в новую возникают события Exit и LostFocus для последнего элемента управления, имевшего фокус. Эти события возникают после событий формы BeforeUpdate и AfterUpdate:

BeforeUpdate (form) стрелкаAfterUpdate (form) стрелкаExit (control) стрелкаLostFocus (control) стрелкаCurrent (form)

При переводе фокуса с одного элемента управления в форме на другой возникают события каждого элемента управления. Например, могут происходить описанные ниже последовательности.

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

    Текущая (форма) стрелкаВведите (control) стрелкаGotFocus (control) стрелкаBeforeUpdate (control) стрелкаAfterUpdate (control)

  • Перевод фокуса на другой элемент управления:

    Выход (control1) стрелкаLostFocus (control1) стрелкаВВОД (control2) стрелкаGotFocus (control2)

  • Перевод фокуса на другую запись:

    BeforeUpdate (form) стрелкаAfterUpdate (form) стрелкаExit (control2) стрелкаLostFocus (control2) стрелкаCurrent (form)

Удаление записей

Когда вы удаляете запись, в форме возникают следующие события, а Microsoft Office Access выводит диалоговое окно с приглашением подтвердить удаление:

Удаление стрелка BeforeDelConfirm стрелка AfterDelConfirm

Если отменить событие Delete, то события BeforeDelConfirm и AfterDelConfirm не возникнут, а диалоговое окно не появится.

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

При переводе фокуса на новую (пустую) запись в форме и создании записи путем ввода данных с клавиатуры происходят следующие события:

Текущая (форма) стрелкаВвод (control) стрелкаGotFocus (control) стрелкаBeforeInsert (форма) стрелкаAfterInsert (форма)

Событие BeforeInsert (form) активируется, как только вы начинаете вводить текст в элементе управления . Событие AfterInsert (form) активируется после выхода из записи.

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

К началу страницы

Порядок событий формы и подчиненной формы

События формы возникают при открытии и закрытии форм, при переходах между формами и при работе с данными в форме или подчиненной форме.

Открытие и закрытие формы

При открытии формы события возникают в следующем порядке:

Откройте стрелка стрелка#x4 стрелкаАктивировать текущий

Если в форме нет активных элементов управления, после события Activate, но до события Current возникает событие GotFocus для формы.

При закрытии формы происходят следующие события:

Выгрузка стрелка деактивация стрелка закрыть

Если в форме нет активных элементов управления, после события Unload, но до события Deactivate возникает событие LostFocus для формы.

Перемещение между формами

При переходе из одной открытой формы в другую возникает событие Deactivate для первой формы и событие Activate для второй формы:

Деактивировать (form1) стрелкаActivate (form2)

Событие формы Deactivate возникает также при переключении с вкладки формы на вкладку другого объекта Access. Однако событие Deactivate не возникает при переходе в диалоговое окно, в окно формы, свойство PopUp которой имеет значение Yes, или в окно другой программы.

Примечание:  Событие Open не возникает при переводе фокуса в уже открытую форму даже в том случае, если фокус переведен в эту форму посредством макрокоманды OpenForm.

Работа с данными в форме

При перемещении по записям формы и изменении данных возникают события формы и события элементов управления. Например, при открытии формы возникает следующая цепочка событий:

Открытие (форма) стрелкаЗагрузка (форма) стрелкаизменение размера (форма) стрелкаАктивация (форма) стрелкаТекущая (форма) стрелкаВвод (control)0 GotFocus (control)

Аналогично при закрытии формы возникают следующие события:

Выход (управление) стрелкаlostFocus (control) стрелкаВыгрузка (форма) стрелкаДеактивация (форма) стрелкаЗакрыть (форма)

При изменении данных в элементе управления события BeforeUpdate и AfterUpdate как для элемента управления, так и для формы возникают до события Exit.

Работа с подчиненными формами

При открытии формы, содержащей подчиненную форму, она и ее записи загружаются перед формой main. Таким образом, события для подчиненной формы и ее элементов управления (например, Open, Current, Ввод и GotFocus) происходят перед событиями формы. Однако событие Activate не возникает для дочерних форм. Таким образом, при открытии формы main событие Activate запускается только для main формы.

Аналогичным образом, при закрытии формы, содержащей подчиненную форму, подформа и ее записи выгружаются после формы. Событие Деактивация не возникает для подчиненных форм. Таким образом, при закрытии формы main событие Деактивации запускается только для формы main. События для элементов управления, формы и подчиненной формы происходят в следующем порядке:

  1. События элементов управления в подчиненной форме, такие как Exit и LostFocus.

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

  3. События формы, такие как Deactivate и Close.

  4. События подчиненной формы.

Примечание: Так как события подчиненной формы возникают после закрытия главной формы, некоторые события, такие как отмена закрытия главной формы в результате события в подчиненной форме, произойти не могут. Проверки условий такого типа следует связывать с событиями в главной форме.

К началу страницы

Порядок событий клавиатуры и мыши

События клавиатуры возникают в имеющих фокус формах или элементах управления при нажатии клавиш или передаче команд клавиатуры. События мыши возникают для форм, разделов форм и элементов управления при нажатии кнопок мыши, если в этот момент указатель находится в форме, разделе формы или элементе управления. События мыши также возникают при перемещении указателя в форме, разделе или элементе управления.

События клавиатуры

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

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

При нажатии и освобождении клавиши или отправке нажатия клавиши в набор знаков ANSI возникают события KeyDown, KeyPress и KeyUp . Если вы нажимаете и удерживаете клавишу ANSI, события KeyDown и KeyPress многократно чередуются (KeyDown, KeyPress, KeyDown, KeyPress и т. д.), пока вы не отпустите клавишу; затем возникает событие KeyUp .

При нажатии и отпускании клавиши, которая не является клавишей ANSI, возникают события KeyDown и KeyUp. Если вы нажимаете и удерживаете клавишу, не являющуюся клавишей ANSI, то до отпускания клавиши возникает и повторяется событие KeyDown; при отпускании клавиши возникает событие KeyUp.

Если нажатие клавиши вызывает другое событие элемента управления, то оно возникает после события KeyPress, но до события KeyUp. Например, если нажатие клавиши приводит к изменению текста в текстовом поле, то событие Change возникает в следующей цепочке событий:

KeyDown стрелка KeyPress стрелка Изменение стрелка keyUp

Если нажатие клавиши вызывает перевод фокуса из одного элемента управления на другой, то для первого элемента управления возникает событие KeyDown, а для второго происходят события KeyPress и KeyUp. Например, если пользователь изменяет данные в элементе управления и нажимает клавишу TAB для перехода на следующий элемент управления, то возникают следующие события:

  • Первый элемент управления:

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

  • Второй элемент управления:

    Введите стрелка GotFocus стрелка KeyPress стрелка KeyUp

События мыши

Если вы нажимаете и отпускаете кнопку мыши, когда указатель установлен на элементе управления в форме, возникает следующая цепочка событий элемента управления:

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

Если фокус находится на элементе управления, а вы щелкаете другой элемент управления, чтобы переместить на него фокус, возникают следующие события:

  • Первый элемент управления:

    Выход стрелка LostFocus

  • Второй элемент управления:

    Введите стрелка GotFocus стрелка MouseDown стрелка MouseUp стрелка Click

Если вы переходите на другую запись и щелкаете элемент управления, то событие формы Current возникает до события Enter элемента управления.

Двойной щелчок элемента управления приводит к возникновению двух событий: Click и DblClick. Например, если дважды щелкнуть элемент управления, не являющийся кнопкой, то возникает следующая цепочка событий элемента управления:

MouseD собственный стрелка MouseUp стрелка Click стрелка DblClick стрелка MouseUp

Если дважды щелкнуть кнопку, возникает предыдущая последовательность событий, за которой следует второе событие Click.

Событие формы, раздела или элемента управления MouseMove возникает при перемещении указателя по форме, разделу или элементу управления. Это событие не зависит от других событий мыши.

К началу страницы

Порядок событий отчета и разделов отчета

События отчета и разделов отчета возникают при открытии отчета для печати или предварительного просмотра, а также при закрытии отчета.

События отчета

При открытии отчета для печати или предварительного просмотра и его последующем закрытии или переходе на другую вкладку Access события возникают в следующем порядке:

Открыть стрелка Активировать стрелка Закрыть стрелка Деактивировать

При переходе между двумя открытыми отчетами возникает событие Deactivate для первого отчета и событие Activate для второго:

Деактивация (отчет1) стрелкаАктивация (report2)

Событие отчета Deactivate возникает также при переключении с отчета на вкладку другого объекта Access. Однако событие Deactivate не возникает при переходе в диалоговое окно, в окно формы, свойство PopUp которой имеет значение Yes, или в окно другой программы.

При открытии отчета, созданного на основе запроса, Access создает для отчета событие Open до выполнения базового запроса. Это делает возможным ввод в отчет условий с помощью макроса или процедуры обработки событий, которые запускаются в ответ на событие Open. Например, макрос или процедура обработки событий позволяют открыть настраиваемое диалоговое окно, через которое пользователь вводит в отчет условия.

События разделов отчета

При печати или предварительном просмотре отчета события разделов отчета Format и Print возникают после событий отчета Open и Activate и до событий отчета Close и Deactivate:

Открытие (отчет) стрелкаАктивация (отчет) стрелкаФормат (раздел отчета) стрелкаПечать (раздел отчета) стрелкаЗакрыть (отчет) стрелкаДеактивировать (отчет)

Безопасность    Вы можете использовать представление отчета, чтобы включить фильтрацию отчетов пользователей. Но в отличие от предварительного просмотра события форматирования и печати в любом разделе не встречаются в представлении отчета. Это также относится к результатам функции VBA и определяемым пользователем процедурам, которые отображаются в элементах управления (например, подписи меток, состояние отображения, условное форматирование, изменение размера элементов управления и т. д.) в этих событиях. Поэтому не используйте код в этом событии для форматирования, скрытия или печати конфиденциальных данных, которые могут оказаться доступными. Рекомендуется предварительно отфильтровать данные или отключить предварительный просмотр отчета, задав для свойства AllowReportView значение Нет.

Кроме того, во время форматирования отчета или после завершения форматирования, но до возникновения события Print могут возникнуть следующие события:

  • Событие Retreat возникает при возвращении в предыдущий раздел во время форматирования.

  • Событие NoData возникает при отсутствии выводящихся в отчете записей.

  • Событие Page возникает после завершения форматирования, но до начала печати. Это событие можно использовать для настройки вида отчета при печати.

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.