Одно действие, например переход от одного элемента управления к другому элементу управления, может активировать несколько различных событий, происходящих в определенной последовательности. Важно знать, когда и в каком порядке возникают события, так как это может повлиять на то, как и когда выполняются макросы или процедуры обработки событий. Например, если есть две процедуры обработки событий, которые должны выполняться в определенном порядке, нужно убедитесь в том, что в таком же порядке возникают события, связанные с ними.
В этом разделе...
- Порядок событий элементов управления в форме
- Порядок событий записей в формах
- Порядок событий формы и подчиненной формы
- Порядок событий клавиатуры и мыши
- Порядок событий отчета и разделов отчета
Порядок событий элементов управления в форме
События происходят для элементов управления в формах при перемещении фокуса в элемент управления, а также при изменении и обновлении данных в элементе управления.
Примечание
Microsoft Office Access отображает имена событий в редакторе Visual Basic немного не так, как на странице свойств и в построителе макросов. Например, событие, которое на странице свойств и в построителе макросов называется On Got Focus, в редакторе Visual Basic называется GotFocus. В примерах ниже для имен событий используется формат Visual Basic для приложений (VBA).
Перемещение фокуса на элемент управления
При перемещении фокуса на элемент управления в форме (например, при открытии формы, содержащей один или несколько активных элементов управления, или при переходе на другой элемент управления в той же форме) возникают события Enter и GotFocus в следующем порядке:
Введите
GotFocus
Когда вы открываете форму, события Enter и GotFocus возникают после событий, связанных с открытием формы (таких как Open, Activate и Current), в следующей последовательности:
Стрелка открытия (
форма) Активация (форма)
Текущая (форма)
Ввод (управление)
GotFocus (control)
При переводе фокуса с элемента управления в форме (например, при закрытии формы, в которой выводятся один или несколько активных элементов управления, или при переходе на другой элемент управления в той же форме) возникают события Exit и LostFocus в следующем порядке:
Стрелка выхода
LostFocus
Когда вы закрываете форму, события Exit и LostFocus возникают перед событиями, связанными с закрытием формы, такими как Unload, Deactivate или Close:
Стрелка выхода (управление) LostFocus (control)
Выгрузить (форма)
Деактивировать (форма)
Закрыть (форма) 
Изменение и обновление данных в элементе управления
Когда вы вводите в элемент управления в форме новые данные или изменяете существующие, а после этого переводите фокус на другой элемент управления, возникают события BeforeUpdate и AfterUpdate в следующем порядке:
Стрелка BeforeUpdate
После обновления
Для элемента управления с измененным значением после событий BeforeUpdate и AfterUpdate возникают события Exit и LostFocus:
Стрелка BeforeUpdate
После обновления Стрелка
выхода
выхода ПотерянаФокус
Когда вы изменяете текст, содержащийся в текстовом поле или в поле со списком, возникает событие Change. Оно происходит при любом изменении содержимого элемента управления, причем до перехода фокуса на другой элемент управления или на другую запись (и, следовательно, до возникновения событий BeforeUpdate и AfterUpdate). Если курсор находится в поле, то при нажатии любой клавиши в текстовом поле или поле со списком возникают следующие события:
Стрелка Клавиша Вниз
КлавишаПечатная
Грязная
Изменить
Клавиша Вверх
Событие NotInList возникает, если ввести в поле со списком значение, которого нет в раскрывающемся списке, а затем попытаться переместить фокус на другой элемент управления или запись. Событие NotInList возникает после событий клавиатуры и события Change для поля со списком, но перед событиями других элементов управления или формы. Если для свойства LimitToList поля со списком задано значение Да, событие Error для формы возникает сразу после события NotInList :
Стрелка KeyDown
Стрелка нажатия
Изменить
Клавиша Стрелка Клавиша Стрелка
NotInList: ошибка
Порядок событий записей в формах
События происходят для записей в формах при перемещении фокуса на другую запись, обновлении данных в записи, удалении существующей записи или записи или создании новой записи.
Перемещение фокуса между записями и обновление содержимого записей
При переводе фокуса на существующую запись в форме, вводе новых или изменении существующих данных в записи и при переходе на другую запись возникает такая последовательность событий:
Текущая
(форма) перед обновлениями (форма)
после обновления (форма)
Текущий (форма)
При выходе из измененной записи, но до входа в новую возникают события Exit и LostFocus для последнего элемента управления, имевшего фокус. Эти события возникают после событий формы BeforeUpdate и AfterUpdate:
BeforeUpdate (form)
AfterUpdate (form)
Exit (control)
LostFocus (control)
Current (form)
При переводе фокуса с одного элемента управления в форме на другой возникают события каждого элемента управления. Например, могут происходить описанные ниже последовательности.
- Открытие формы и изменение данных в элементе управления:
Текущая
(форма) Введите (элемент управления)
GotFocus (control)
Передоблицовка (элемент управления)
обновления (элемент управления) - Перевод фокуса на другой элемент управления:
Стрелка выхода (control1)
LostFocus (control1)
ВВОД (control2)
GotFocus (control2) - Перевод фокуса на другую запись:
BeforeUpdate (form)
AfterUpdate (form)
(control2)
LostFocus (control2)
Current (form)
Удаление записей
Когда вы удаляете запись, в форме возникают следующие события, а Microsoft Office Access выводит диалоговое окно с приглашением подтвердить удаление:
Стрелка удаления
доDelConfirm
afterDelConfirm
Если отменить событие Delete, то события BeforeDelConfirm и AfterDelConfirm не возникнут, а диалоговое окно не появится.
Создание записи
При переводе фокуса на новую (пустую) запись в форме и создании записи путем ввода данных с клавиатуры происходят следующие события:
Текущая
(форма) Введите (control)
GotFocus (control)
BeforeInsert (form)
AfterInsert (form) (form)
Событие BeforeInsert (form) активируется, как только вы начинаете вводить текст в элементе управления . Событие AfterInsert (form) активируется после выхода из записи.
События BeforeUpdate и AfterUpdate для элементов управления в форме и для новой записи возникают после события BeforeInsert, но до события AfterInsert.
Порядок событий формы и подчиненной формы
События формы возникают при открытии и закрытии форм, при переходах между формами и при работе с данными в форме или подчиненной форме.
Открытие и закрытие формы
При открытии формы события возникают в следующем порядке:
Открыть
Загрузка
Изменения размера
Активация
Текущий
Если в форме нет активных элементов управления, после события Activate, но до события Current возникает событие GotFocus для формы.
При закрытии формы происходят следующие события:
Стрелка выгрузки
: стрелка деактивации
закрыть
Если в форме нет активных элементов управления, событие LostFocus возникает для формы после события Выгрузки , но перед событием Деактивация .
Перемещение между формами
При переходе из одной открытой формы в другую возникает событие Deactivate для первой формы и событие Activate для второй формы:
Деактивация (форма1)
Активировать (form2)
Событие формы Deactivate возникает также при переключении с вкладки формы на вкладку другого объекта Access. Однако событие Deactivate не возникает при переходе в диалоговое окно, в окно формы, свойство PopUp которой имеет значение Yes, или в окно другой программы.
Примечание
Событие Open не возникает при переводе фокуса в уже открытую форму даже в том случае, если фокус переведен в эту форму посредством макрокоманды OpenForm.
Работа с данными в форме
При перемещении по записям формы и изменении данных возникают события формы и события элементов управления. Например, при открытии формы возникает следующая цепочка событий:
Открытая стрелка (форма)
Загрузка (форма)
Изменить размер (форма)
Активировать (форма)
Текущая (форма)
Ввод (управление)
GotFocus (control)
Аналогично при закрытии формы возникают следующие события:
Стрелка выхода (управление) LostFocus (control)
Выгрузить (форма)
Деактивировать (форма)
Закрыть (форма) 
При изменении данных в элементе управления события BeforeUpdate и AfterUpdate как для элемента управления, так и для формы возникают до события Exit.
Работа с подчиненными формами
При открытии формы, содержащей подчиненную форму, подформа и ее записи загружаются перед основной формой. Таким образом, события для подчиненной формы и ее элементов управления (например, Open, Current, Ввод и GotFocus) происходят перед событиями формы. Однако событие Activate не возникает для дочерних форм. Таким образом, при открытии основной формы событие Activate запускается только для основной формы.
Аналогичным образом, при закрытии формы, содержащей подчиненную форму, подформа и ее записи выгружаются после формы. Событие Деактивация не возникает для подчиненных форм. Таким образом, при закрытии основной формы событие Деактивации запускается только для основной формы. События для элементов управления, формы и подчиненной формы происходят в следующем порядке:
- События элементов управления в подчиненной форме, такие как Exit и LostFocus.
- События элементов управления в главной форме (включая элемент управления подчиненной формы).
- События формы, такие как Deactivate и Close.
- События подчиненной формы.
Примечание
Так как события подчиненной формы возникают после закрытия главной формы, некоторые события, такие как отмена закрытия главной формы в результате события в подчиненной форме, произойти не могут. Проверки условий такого типа следует связывать с событиями в главной форме.
Порядок событий клавиатуры и мыши
События клавиатуры происходят для форм и элементов управления, когда вы нажимаете клавиши или отправляете нажатия клавиш, пока форма или элемент управления имеет фокус. События мыши возникают для форм, разделов форм и элементов управления при нажатии кнопок мыши, если в этот момент указатель находится в форме, разделе формы или элементе управления. События мыши также возникают при перемещении указателя в форме, разделе или элементе управления.
События клавиатуры
Когда вы нажимаете и отпускаете клавишу, когда элемент управления на форме имеет фокус (или используете действие или инструкцию SendKeys для отправки нажатия клавиши), происходит следующая последовательность событий:
Стрелка Клавиша Вниз
Клавиша Нажатие
Вверх
При нажатии и освобождении клавиши или отправке нажатия клавиши в наборе символов ANSI возникают события KeyDown, KeyPress и KeyUp . Если вы нажимаете и удерживаете клавишу ANSI, события KeyDown и KeyPress многократно чередуются (KeyDown, KeyPress, KeyDown, KeyPress и т. д.), пока вы не отпустите клавишу; затем возникает событие KeyUp .
При нажатии и отпускании клавиши, которая не является клавишей ANSI, возникают события KeyDown и KeyUp. Если вы нажимаете и удерживаете клавишу, не являющуюся клавишей ANSI, то до отпускания клавиши возникает и повторяется событие KeyDown; при отпускании клавиши возникает событие KeyUp.
Если нажатие клавиши вызывает другое событие элемента управления, то оно возникает после события KeyPress, но до события KeyUp. Например, если нажатие клавиши приводит к изменению текста в текстовом поле, то событие Change возникает в следующей цепочке событий:
Стрелка Клавиша Вниз
КлавишаПечатная
Изменить
Клавиша Вверх
Если нажатие клавиши вызывает перевод фокуса из одного элемента управления на другой, то для первого элемента управления возникает событие KeyDown, а для второго происходят события KeyPress и KeyUp. Например, если пользователь изменяет данные в элементе управления и нажимает клавишу TAB для перехода на следующий элемент управления, то возникают следующие события:
- Первый элемент управления:
Стрелка клавиши Вниз
перед переключениями
после выхода
выхода
потерянаФокус - Второй элемент управления:
Введите
стрелка GotFocus
Клавиша Нажатие
клавиши
События мыши
Если вы нажимаете и отпускаете кнопку мыши, когда указатель установлен на элементе управления в форме, возникает следующая цепочка событий элемента управления:
Стрелка Мыши Вниз
мышиЩелкните
Если фокус находится на элементе управления, а вы щелкаете другой элемент управления, чтобы переместить на него фокус, возникают следующие события:
- Первый элемент управления:
Стрелка выхода
LostFocus - Второй элемент управления:
Введите
GotFocus
Мыши Стрелка Мыши
Стрелка Мыши Стрелка Вверх
Щелкните
Если вы переходите на другую запись и щелкаете элемент управления, то событие формы Current возникает до события Enter элемента управления.
Двойной щелчок элемента управления приводит к возникновению двух событий: Click и DblClick. Например, если дважды щелкнуть элемент управления, не являющийся кнопкой, то возникает следующая цепочка событий элемента управления:
Стрелка Мыши Вниз
мыши Щелкните
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 возникает после завершения форматирования, но до начала печати. Это событие можно использовать для настройки вида отчета при печати.