Макрокоманда CancelEvent
Область применения: Access 2013, Office 2013
Действие CancelEvent можно использовать для отмены события, вызвавшего запуск макроса с этим действием. Имя макроса — это параметр свойства события, например BeforeUpdate, OnOpen, OnUnload или OnPrint.
Setting
Действие CancelEvent не имеет аргументов.
Замечания
В форме обычно используется действие CancelEvent в макросе проверки со свойством события BeforeUpdate . Когда пользователь вводит данные в элемент управления или запись, Access запускает макрос перед добавлением данных в базу данных. Если данные не выполняют условия проверки в макросе, действие CancelEvent отменяет процесс обновления перед запуском.
Часто это действие используется вместе с действием MessageBox , чтобы указать, что данные не выполнили условия проверки, и предоставить полезные сведения о типе данных, которые необходимо ввести.
Следующие события могут быть отменены действием CancelEvent .
ApplyFilter |
Dirty |
MouseDown |
BeforeDelConfirm |
Exit |
NoData |
BeforeInsert |
Фильтр |
Открыть |
BeforeUpdate |
Format |
|
DblClick |
KeyPress |
Unload |
удаление; |
Примечание.
Действие CancelEvent с событием MouseDown можно использовать только для отмены события, которое возникает при щелчке правой кнопкой мыши объекта.
Если параметр свойства события OnDblClick элемента управления указывает макрос, содержащий действие CancelEvent , действие отменяет событие DblClick .
Для событий, которые можно отменить, поведение по умолчанию для события (то есть то, что Access обычно делает при возникновении события) возникает после выполнения макроса для события. Это позволяет отменить поведение по умолчанию. Например, при двойном щелчке слова, на которое в текстовом поле находится точка вставки, Access обычно выбирает это слово. Это поведение по умолчанию можно отменить в макросе для события DblClick и выполнить другое действие, например открыть форму, содержащую сведения о данных в текстовом поле. Для событий, которые нельзя отменить, поведение по умолчанию происходит до запуска макроса.
Примечание.
Если свойство события OnUnload формы указывает макрос, выполняющий действие CancelEvent , вы не сможете закрыть форму. Необходимо либо исправить условие, вызвавшее выполнение действия CancelEvent, либо открыть макрос и удалить действие CancelEvent . Если форма является модальной, вы не сможете открыть макрос.
Чтобы выполнить действие CancelEvent в модуле Visual Basic для приложений (VBA), используйте метод CancelEvent объекта DoCmd.
Пример
Проверка данных с помощью макроса
Следующий макрос проверки проверяет почтовые коды, введенные в форме Поставщики. Здесь показано использование действий StopMacro, MessageBox, CancelEvent и GoToControl . Условное выражение проверяет страну или регион и почтовый индекс, введенный в записи в форме. Если почтовый индекс не соответствует формату страны или региона, макрос отображает окно сообщения и отменяет сохранение записи. Затем он возвращает вас к элементу управления Почтовый индекс, где можно исправить ошибку. Этот макрос должен быть присоединен к свойству BeforeUpdate формы Поставщики.
Условие |
Макрокоманда |
Аргументы: параметр |
Примечание |
---|---|---|---|
IsNull([CountryRegion]) |
StopMacro |
Если CountryRegion имеет значение NULL, почтовый индекс невозможно проверить. |
|
[СтранаРегион] В ("Франция", "Италия", "Испания") и Len([почтовый индекс]) <> 5 |
MessageBox |
Сообщение: почтовый индекс должен содержать 5 символов. Звуковой сигнал: Да Тип: Заголовок информации : Ошибка почтового индекса |
Если почтовый индекс не содержит 5 символов, отобразится сообщение. |
... |
ОтменитьСобытие |
Отмена события. |
|
GoToControl |
Имя элемента управления: Почтовый код |
||
[СтранаРегион] В ("Австралия", "Сингапур") и Len([почтовый индекс]) <> 4 |
MessageBox |
Сообщение: почтовый индекс должен содержать 4 символа. Звуковой сигнал: Да Тип: Заголовок информации : Ошибка почтового индекса |
Если почтовый индекс не содержит 4 символа, отобразите сообщение. |
... |
ОтменитьСобытие |
Отмена события. |
|
GoToControl |
Имя элемента управления: Почтовый код |
||
([CountryRegion] = "Canada") И ([Почтовый индекс] Не нравится"[A-Z][0-9][A-Z] [0-9][A-Z][0-9]") |
MessageBox |
Сообщение: почтовый индекс недопустим. Пример канадского кода: H1J 1C3 Beep: Yes Type: Information Title: Почтовый индекс Ошибка |
Если почтовый индекс неверен для Канады, отобразите сообщение. (Пример канадского кода: H1J 1C3) |
... |
ОтменитьСобытие |
Отмена события. |