Событие Form.Open (Access)
Событие Open происходит при открываемой форме, но до отображения первой записи.
Синтаксис
выражения. Open (Отмена)
выражение: переменная, представляющая объект Form.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Отмена | Обязательный | Integer | Параметр определяет, происходит ли открытие формы или отчета. Настройка аргумента Отмена true (1) отменяет открытие формы или отчета. |
Примечания
При запуске макроса или процедуры события при открытом событии формы можно закрыть другое окно или переместить фокус на определенный контроль формы. Вы также можете запустить макрос или процедуру события, которая запросит сведения, необходимые перед открытием или печатью формы или отчета.
Например, процедура Open macro или event может открыть настраиваемый диалоговое окно, в котором пользователь вводит критерии фильтрации набора записей для отображения в форме или диапазоне дат, которые необходимо включить для отчета.
Событие Open не происходит при активации уже открытой формы. например, при переходе на форму из другого окна в Microsoft Access или использовании действия OpenForm на макросе, чтобы довести открытую форму до вершины. Однако событие Активировать происходит в этих ситуациях.
Когда вы открываете форму на основе базирующегося запроса, Microsoft Access запускает базовую запрос для формы, прежде чем она запускает процедуру Open macro или event.
Если приложение может одновременно загружать несколько форм, используйте события Активация и Деактивации вместо события Open для отображения и сокрытия настраиваемой панели инструментов при переходе фокуса в другую форму.
Событие Open происходит перед событием Load, которое запускается при запуске формы и отображении записей.
При первом открываемом виде в этом порядке происходят следующие события:
Откройте → Загрузка → → активировать → Current
Событие Close происходит после события разгрузки, которое запускается после закрытия формы, но перед ее удалением с экрана.
При закрытии формы в этом порядке происходят следующие события:
Разгрузка → отключения → Close
Когда происходит событие Close, можно открыть другое окно или попросить имя пользователя сделать запись журнала, указывающее, кто использовал форму или отчет.
Если вы пытаетесь решить, использовать ли событие Open или Load для макроса или процедуры событий, одно существенное отличие состоит в том, что событие Open можно отменить, но событие Load не может. Например, если вы динамически строите источник записей для формы в процедуре событий для открытого события формы, можно отменить открытие формы, если нет записей для отображения. Аналогично, событие разгрузки может быть отменено, но событие Закрыть не может.
Пример
В следующем примере показано, как отменить открытие формы при выборе пользователем кнопки «Нет». Поле сообщений побуждает пользователя вводить сведения о порядке. Если пользователь выбирает «Нет», форма «Сведения о порядке» не открывается.
Чтобы попробовать пример, добавьте в форму следующую процедуру события.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Событие Form.Current (Access)
Происходит, когда фокус перемещается к записи, делая ее текущей записью, или когда форма обновляется или повторно.
Синтаксис
выражения. Current
выражение: переменная, представляющая объект Form.
Примечания
Чтобы запустить процедуру макроса или события, когда это событие произойдет, установите свойство OnCurrent имя макроса или [Event Procedure].
Это событие происходит как при открываемой форме, так и в том случае, если фокус оставляет одну запись и перемещается на другую. Microsoft Access запускает процедуру текущего макроса или события до отображения первой или следующей записи.
При запуске процедуры макроса или события при текущем событии формы можно отобразить сообщение или синхронизировать записи в другой форме, связанной с текущей записью. Например, когда запись клиента становится текущей, можно отобразить предыдущий заказ клиента. Когда запись поставщика становится текущей, вы можете отображать продукты, изготовленные поставщиком в форме поставщиков. Вы также можете выполнять вычисления на основе текущей записи или изменять форму в ответ на данные текущей записи.
Если процедура макроса или события выполняет действие GoToControl или GoToRecord или соответствующий метод объекта DoCmd в ответ на событие Open, происходит событие Current.
Событие Current также происходит при обновлении формы или повторном запросе, например, при выборе удаления фильтра или сортировки в меню Records или использовании действия Requery в макрос или методе Requery в Visual Basic коде.
При первом открываемом виде в этом порядке происходят следующие события:
Откройте → Загрузка → → активировать → Current
Пример
В следующем примере процедура текущего события проверяет состояние кнопки параметра «Прекращено». Если выбрана кнопка, в примере указывается красный цвет фонового цвета поля ProductName, чтобы указать, что продукт был прекращен.
Чтобы попробовать пример, добавьте следующую процедуру события в форму, которая содержит параметр Под названием Прекращено и текстовое поле под названием ProductName.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Событие Form.Activate (Access)
Событие Активировать происходит, когда форма получает фокус и становится активным окном.
Синтаксис
выражения. Активация
выражение: переменная, представляющая объект Form.
Возвращаемое значение
Примечания
Событие Активировать не происходит, когда форма получает фокус из диалоговое окно, всплывающее окно или другую форму.
Чтобы запустить процедуру макроса или события, когда происходят эти события, установите свойство OnActivate или OnDeactivate имя макроса или [Event Procedure].
Вы можете сделать форму активной, открыв ее, выбрав ее или управление на ней, или с помощью метода SetFocus в Visual Basic.
Событие Активировать может происходить только тогда, когда видна форма.
Событие Активировать происходит перед событием GotFocus; Событие Деактивации происходит после события LostFocus.
При переходе между двумя открытыми формами происходит событие Deactivate для переключаемой формы, а событие Активировать для переключаемой формы. Если формы не содержат видимых элементов управления с включенной поддержкой, событие LostFocus происходит для первой формы перед событием Деактивации, а событие GotFocus происходит для второй формы после события Активировать.
При первом открываемом виде в этом порядке происходят следующие события:
Откройте → Загрузка → → активировать → Current
При закрытии формы в этом порядке происходят следующие события:
Разгрузка → отключения → Close
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Порядок событий в объектах базы данных
Одно действие, например перемещение с одного элемента управления объекта к другому, может запустить несколько разных событий, которые происходят в определенной последовательности. Важно знать, когда и в каком порядке возникают события, так как это может повлиять на то, как и когда выполняются макросы или процедуры обработки событий. Например, если есть две процедуры обработки событий, которые должны выполняться в определенном порядке, нужно убедитесь в том, что в таком же порядке возникают события, связанные с ними.
В этом разделе.
Порядок событий элементов управления в форме
События элемента управления возникают в форме при переводе фокуса на элемент управления и при изменении или обновлении данных в элементе управления.
Примечание: Microsoft Office Access отображает имена событий в редакторе Visual Basic немного не так, как на странице свойств и в построителе макросов. Например, событие, которое на странице свойств и в построителе макросов называется On Got Focus, в редакторе Visual Basic называется GotFocus. В примерах ниже для имен событий используется формат Visual Basic для приложений (VBA).
Перемещение фокуса на элемент управления
При перемещении фокуса на элемент управления в форме (например, при открытии формы, содержащей один или несколько активных элементов управления, или при переходе на другой элемент управления в той же форме) возникают события Enter и GotFocus в следующем порядке:
Enter GotFocus
Когда вы открываете форму, события Enter и GotFocus возникают после событий, связанных с открытием формы (таких как Open, Activate и Current), в следующей последовательности:
Open (form) Activate (form) Current (form) Enter (control) GotFocus (control)
При переводе фокуса с элемента управления в форме (например, при закрытии формы, в которой выводятся один или несколько активных элементов управления, или при переходе на другой элемент управления в той же форме) возникают события Exit и LostFocus в следующем порядке:
Выход LostFocus
Когда вы закрываете форму, события Exit и LostFocus возникают перед событиями, связанными с закрытием формы, такими как Unload, Deactivate или Close:
Exit (control) LostFocus (control) Unload (form) Deactivate (form) Close (form)
Изменение и обновление данных в элементе управления
Когда вы вводите в элемент управления в форме новые данные или изменяете существующие, а после этого переводите фокус на другой элемент управления, возникают события BeforeUpdate и AfterUpdate в следующем порядке:
BeforeUpdate Afte rUpdate
Для элемента управления с измененным значением после событий BeforeUpdate и AfterUpdate возникают события Exit и LostFocus:
BeforeUpdate AfterUpdate Exit LostFocus
Когда вы изменяете текст, содержащийся в текстовом поле или в поле со списком, возникает событие Change. Оно происходит при любом изменении содержимого элемента управления, причем до перехода фокуса на другой элемент управления или на другую запись (и, следовательно, до возникновения событий BeforeUpdate и AfterUpdate). Если курсор находится в поле, то при нажатии любой клавиши в текстовом поле или поле со списком возникают следующие события:
KeyDown KeyPress Dirty Change KeyUp
Событие NotInList возникает, если ввести в поле со списком значение, которого нет в раскрывающемся списке, а затем попытаться переместить фокус на другой элемент управления или запись. Событие NotInList возникает после событий клавиатуры и события Change для поля со списком, но перед событиями других элементов управления или формы. Если свойство LimitToList поля со списком имеет значение Y es, сразу после события NotInList возникает событие Error для формы:
KeyDown KeyPress Dirty Change KeyUp NotInList0 Error
Порядок событий записей в формах
События записи возникают в форме при переводе фокуса на другую запись, обновлении содержимого записи, удалении существующей записи или записей, а также при создании записи.
Перемещение фокуса между записями и обновление содержимого записей
При переводе фокуса на существующую запись в форме, вводе новых или изменении существующих данных в записи и при переходе на другую запись возникает такая последовательность событий:
Current (form) BeforeUpdate (form) AfterUpdate (form) Current (form)
При выходе из измененной записи, но до входа в новую возникают события Exit и LostFocus для последнего элемента управления, имевшего фокус. Эти события возникают после событий формы BeforeUpdate и AfterUpdate:
BeforeUpdate (form) AfterUpdate (form) Exit (control) LostFocus (control) Current (form)
При переводе фокуса с одного элемента управления в форме на другой возникают события каждого элемента управления. Например, могут происходить описанные ниже последовательности.
Открытие формы и изменение данных в элементе управления:
Current (form) Enter (control) GotFocus (control) BeforeUpdate (control) AfterUpdate (control)
Перевод фокуса на другой элемент управления:
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
Перевод фокуса на другую запись:
BeforeUpdate (form) AfterUpdate (form) Exit (control2) Lo stFocus (control2) Current (form)
Удаление записей
Когда вы удаляете запись, в форме возникают следующие события, а Microsoft Office Access выводит диалоговое окно с приглашением подтвердить удаление:
Удаление BeforeDelConfirm AfterDelConfirm
Если отменить событие Delete, то события BeforeDelConfirm и AfterDelConfirm не возникнут, а диалоговое окно не появится.
Создание записи
При переводе фокуса на новую (пустую) запись в форме и создании записи путем ввода данных с клавиатуры происходят следующие события:
Current (form) Enter (control) GotFocus (control) BeforeInsert (form) AfterInsert (form)
Событие BeforeInsert (форма) активирует, как только вы начнете вводить текст в control. Триггеры события AfterInsert (формы) после того, как вы покидали запись.
События BeforeUpdate и AfterUpdate для элементов управления в форме и для новой записи возникают после события BeforeInsert, но до события AfterInsert.
Порядок событий формы и подчиненной формы
События формы возникают при открытии и закрытии форм, при переходах между формами и при работе с данными в форме или подчиненной форме.
Открытие и закрытие формы
При открытии формы события возникают в следующем порядке:
Открытие загрузки и активации текущий
Если в форме нет активных элементов управления, после события Activate, но до события Current возникает событие GotFocus для формы.
При закрытии формы происходят следующие события:
Unload Deactivate Close
Если в форме нет активных элементов управления, после события Unload, но до события Deactivate возникает событие LostFoc us для формы.
Перемещение между формами
При переходе из одной открытой формы в другую возникает событие Deactivate для первой формы и событие Activate для второй формы:
Деактивировать (форма 1) активировать (форма 2)
Событие формы Deactivate возникает также при переключении с вкладки формы на вкладку другого объекта Access. Однако событие Deactivate не возникает при переходе в диалоговое окно, в окно формы, свойство PopUp которой имеет значение Yes, или в окно другой программы.
Примечание: Событие Open не возникает при переводе фокуса в уже открытую форму даже в том случае, если фокус переведен в эту форму посредством макрокоманды OpenForm.
Работа с данными в форме
При перемещении по записям формы и изменении данных возникают события формы и события элементов управления. Например, при открытии формы возникает следующая цепочка событий:
Открыть (форма) Загрузка (форма) Resize (форма) Activate (форма) Current (form) Enter (control)0 GotFocus (control)
Аналогично при закрытии формы возникают следующие события:
Exit (control) Lo stFocus (control) Unload (form) Deactivate (form) Close (form)
При изменении данных в элементе управления события BeforeUpdate и AfterUpdate как для элемента управления, так и для формы возникают до события Exit.
Работа с подчиненными формами
При этом подчиненная форма и ее записи загружаются перед основной. Таким образом, события подчиненной формы и ее элементов управления (таких как «Открыть», «Текущая», «Ввод»и GotFocus)возникают перед событиями формы. Однако для подчиненной формы событие «Активировать» не происходит. Таким образом, открытие главной формы приводит к активации события только для основной формы.
Аналогичным образом при закрытии формы, содержаной подчиненную форму, подчиненная форма и ее записи выгружаются после нее. Событие «Деактивировать» не возникает для подчиненной формы. Таким образом, закрытие главной формы вызывает событие deactivate только для основной формы. События элементов управления, формы и подчиненной формы возникают в следующем порядке:
События элементов управления в подчиненной форме, такие как Exit и LostFocus.
События элементов управления в главной форме (включая элемент управления подчиненной формы).
События формы, такие как Deactivate и Close.
События подчиненной формы.
Примечание: Так как события подчиненной формы возникают после закрытия главной формы, некоторые события, такие как отмена закрытия главной формы в результате события в подчиненной форме, произойти не могут. Проверки условий такого типа следует связывать с событиями в главной форме.
Порядок событий клавиатуры и мыши
События клавиатуры возникают в имеющих фокус формах или элементах управления при нажатии клавиш или передаче команд клавиатуры. События мыши возникают для форм, разделов форм и элементов управления при нажатии кнопок мыши, если в этот момент указатель находится в форме, разделе формы или элементе управления. События мыши также возникают при перемещении указателя в форме, разделе или элементе управления.
События клавиатуры
При нажатии и отпускать клавишу, когда фокус на элементе управления в форме (либо используется действие SendKeys или инструкция для отправки нажатия клавиши), возникает следующая цепочка событий:
KeyDown KeyPress KeyUp
Если нажать и отпустить клавишу или отправить нажатие клавиши во набор знаков ANSI, нажатие клавиши, нажатие клавиши и клавишаUP возникает во всех событиях клавиатуры и клавиши. Если нажать и удерживать клавишу ANSI, события KeyDown и KeyPress будут несколько раз (KeyDown, KeyPress, KeyDown, KeyPressи так далее), пока вы не отпустите клавишу; и возникает событие KeyUp.
При нажатии и отпускании клавиши, которая не является клавишей ANSI, возникают события KeyDown и KeyUp. Если вы нажимаете и удерживаете клавишу, не являющуюся клавишей ANSI, то до отпускания клавиши возникает и повторяется событие KeyDown; при отпускании клавиши возникает событие KeyUp.
Если нажатие клавиши вызывает другое событие элемента управления, то оно возникает после события KeyPress, но до события KeyUp. Например, если нажатие клавиши приводит к изменению текста в текстовом поле, то событие Change возникает в следующей цепочке событий:
KeyDown KeyPress change KeyUp
Если нажатие клавиши вызывает перевод фокуса из одного элемента управления на другой, то для первого элемента управления возникает событие KeyDown, а для второго происходят события KeyPress и KeyUp. Например, если пользователь изменяет данные в элементе управления и нажимает клавишу TAB для перехода на следующий элемент управления, то возникают следующие события:
Первый элемент управления:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
Второй элемент управления:
Enter GotFocus KeyPress KeyUp
События мыши
Если вы нажимаете и отпускаете кнопку мыши, когда указатель установлен на элементе управления в форме, возникает следующая цепочка событий элемента управления:
MouseDown MouseUp click
Если фокус находится на элементе управления, а вы щелкаете другой элемент управления, чтобы переместить на него фокус, возникают следующие события:
Первый элемент управления:
Выход LostFocus
Второй элемент управления:
Enter GotFocus MouseDown MouseUp Click
Если вы переходите на другую запись и щелкаете элемент управления, то событие формы Current возникает до события Enter элемента управления.
Двойной щелчок элемента управления приводит к возникновению двух событий: Click и DblClick. Например, если дважды щелкнуть элемент управления, не являющийся кнопкой, то возникает следующая цепочка событий элемента управления:
Moused own MouseUp Click DblClick MouseUp
Если дважды щелкнуть кнопку, возникает предыдущая последовательность событий, за которой следует второе событие Click.
Событие формы, раздела или элемента управления MouseMove возникает при перемещении указателя по форме, разделу или элементу управления. Это событие не зависит от других событий мыши.
Порядок событий отчета и разделов отчета
События отчета и разделов отчета возникают при открытии отчета для печати или предварительного просмотра, а также при закрытии отчета.
События отчета
При открытии отчета для печати или предварительного просмотра и его последующем закрытии или переходе на другую вкладку Access события возникают в следующем порядке:
Открыть активировать Закрыть Деактивировать
При переходе между двумя открытыми отчетами возникает событие Deactivate для первого отчета и событие Activate для второго:
Деактивировать (отчет1) активировать (отчет2)
Событие отчета Deactivate возникает также при переключении с отчета на вкладку другого объекта Access. Однако событие Deactivate не возникает при переходе в диалоговое окно, в окно формы, свойство PopUp которой имеет значение Yes, или в окно другой программы.
При открытии отчета, созданного на основе запроса, Access создает для отчета событие Open до выполнения базового запроса. Это делает возможным ввод в отчет условий с помощью макроса или процедуры обработки событий, которые запускаются в ответ на событие Open. Например, макрос или процедура обработки событий позволяют открыть настраиваемое диалоговое окно, через которое пользователь вводит в отчет условия.
События разделов отчета
При печати или предварительном просмотре отчета события разделов отчета Format и Print возникают после событий отчета Open и Activate и до событий отчета Close и Deactivate:
Открыть (отчет) активировать (отчет) формат (раздел отчета) (раздел отчета) Закрыть (отчет) Деактивировать (отчет)
Безопасность В этом представлении можно включить фильтрацию отчетов пользователями. Но в отличие от предварительного просмотра, события «Формат» и «Печать» в любом разделе не возникают в режиме отчета. Это также относится к результатам функции VBA и пользовательским процедурам, которые отображаются в таких событиях элементов управления, как подписи, состояние отображения, условное форматирование, размер элементов управления и так далее. Поэтому не используйте код в этом событии для форматирование, скрытие или печать конфиденциальных данных, которые могут стать открыты. Рекомендуем предварительно отфильтровать данные или отключить предварительный просмотр отчета, задав для свойства AllowReportView параметр «Нет».
Кроме того, во время форматирования отчета или после завершения форматирования, но до возникновения события Print могут возникнуть следующие события:
Событие Retreat возникает при возвращении в предыдущий раздел во время форматирования.
Событие NoData возникает при отсутствии выводящихся в отчете записей.
Событие Page возникает после завершения форматирования, но до начала печати. Это событие можно использовать для настройки вида отчета при печати.