Можете да използвате действието CancelEvent , за да отмените събитие, поради което Access да изпълни макрос, съдържащ това действие. Името на макроса е настройката на свойство на събитие, като например BeforeUpdate, OnOpen, OnUnload или OnPrint.
Забележка: Макрокомандата CancelEvent не е налична в уеб приложенията на Access.
Настройка
Действието CancelEvent няма никакви аргументи.
Забележки
В един формуляр обикновено използвате действието CancelEvent в макрос за проверка със свойството на събитието BeforeUpdate. Когато потребителят въведе данни в контрола или запис, Access изпълнява макроса, преди да добави данните към базата данни. Ако данните не отговарят на условията за проверка в макроса, действието CancelEvent анулира процеса на актуализация, преди да е започнал.
Често това действие се използва с действието MsgBox, за да се укаже, че данните не отговарят на условията за проверка, и да се предостави полезна информация за вида данни, които трябва да бъдат въведени.
Следните събития могат да бъдат отменени чрез действието CancelEvent.
ApplyFilter |
Dirty |
MouseDown |
BeforeDelConfirm |
Exit |
NoData |
BeforeInsert |
Filter |
Open |
BeforeUpdate |
Format |
|
DblClick |
KeyPress |
Unload |
Delete |
Забележка: Можете да използвате действието CancelEvent със събитието MouseDown само за да отмените събитието, което настъпва при щракване с десния бутон върху обект.
Ако настройката на свойството на събитието OnDblClick на контрола указва макрос, който съдържа действието CancelEvent, действието отменя събитието DblClick.
За събития, които могат да бъдат отменени, поведението по подразбиране за събитието (т.е. това, което Access обикновено прави, когато възникне събитието) се проявява, след като се изпълни макросът за събитието. Това ви позволява да отмените поведението по подразбиране. Например когато в текстово поле щракнете двукратно върху дума, върху която е точката на вмъкване, Access обикновено избира думата. Можете да отмените това поведение по подразбиране в макроса за събитието DblClick и да извършвате някакво друго действие, като например отваряне на формуляр с информация за данните в текстовото поле. За събития, които не могат да бъдат отменени, поведението по подразбиране се проявява, преди да се изпълни макросът.
Забележка: Ако свойството на събитието OnUnload за формуляр указва макрос, който извършва действието CancelEvent, няма да можете да затворите формуляра. Ще трябва или да коригирате условието, довело до извършване на действието CancelEvent, или да отворите макроса и да изтриете действието CancelEvent. Ако формулярът е модален формуляр, няма да можете да отворите макроса.
За да извършите действието CancelEvent в модул на Visual Basic for Applications (VBA), използвайте метода CancelEvent на обекта DoCmd.
Пример
Проверка на данни с помощта на макрос
Следващият макрос за проверка проверява пощенските кодове, въведени във формуляра "Доставчици". Той илюстрира използването на действията StopMacro, MsgBox, CancelEvent и GoToControl. Условният израз проверява страната/региона и пощенския код, въведени в запис във формуляра. Ако пощенският код не е в правилния формат за страната/региона, макросът показва прозорец за съобщение и отменя записването на записа. След това ви връща към контролата за пощенския код, където можете да коригирате грешката. Този макрос трябва да бъдат прикачен към свойството BeforeUpdate на формуляра "Доставчици".
Условие |
Действие |
Аргументи: настройка |
Коментар |
IsNull([СтранаРегион]) |
StopMacro |
Ако "СтранаРегион" е Null, пощенският код не може да бъде проверен. |
|
[СтранаРегион] In ("Франция","Италия","Испания") And Len([Пощенски код]) <> 5 |
MsgBox |
Съобщение: Пощенският код трябва да съдържа 5 знака. Звуков сигнал: Да Тип: Информация Заглавие: Грешка в пощенския код |
Ако пощенският код не е от 5 знака, се показва съобщение. |
... |
CancelEvent |
Отмяна на събитието. |
|
GoToControl |
Име на контролата: Пощенски код |
||
[СтранаРегион] In ("Австралия","Сингапур") And Len([Пощенски код]) <> 4 |
MsgBox |
Съобщение: Пощенският код трябва да съдържа 4 знака. Звуков сигнал: Да Тип: Информация Заглавие: Грешка в пощенския код |
Ако пощенският код не е от 4 знака, се показва съобщение. |
... |
CancelEvent |
Отмяна на събитието. |
|
GoToControl |
Име на контролата: Пощенски код |
||
([СтранаРегион] = "Канада") And ([Пощенски код] Not Like"[A-Z][0-9][A-Z] [0-9][A-Z][0-9]") |
MsgBox |
Съобщение: Пощенският код не е валиден. Пример за канадски код: H1J 1C3 Звуков сигнал: Да Тип: Информация Заглавие: Грешка в пощенския код |
Ако пощенският код за Канада е грешен, се показва съобщение. (Пример за канадски код: H1J 1C3) |
... |
CancelEvent |
Отмяна на събитието. |