使用 CancelEvent 操作可以取消一个事件,该事件在取消前用于引发 Microsoft Access 执行后来包含该操作的宏。宏名称即为事件属性的设置,如 BeforeUpdate、OnOpen、OnUnload 或 OnPrint。
CancelEvent 操作没有任何参数。
在窗体中,通常在包含 BeforeUpdate 事件属性的验证宏中使用 CancelEvent 操作。当用户在控件或记录中输入数据时,Access 将在向数据库添加这些数据之前先运行该宏。如果数据不符合宏中的验证条件,CancelEvent 操作便会在更新过程开始之前取消更新。
通常都是将该操作和 MsgBox 操作一起使用,以指出数据不符合验证条件,并提供关于应该输入的数据类型的有用信息。
使用 CancelEvent 操作可以取消下列事件:
ApplyFilter |
Dirty |
MouseDown |
BeforeDelConfirm |
Exit |
NoData |
BeforeInsert |
Filter |
Open |
BeforeUpdate |
Format |
|
DblClick |
KeyPress |
Unload |
Delete |
注释 可以将 MouseDown 事件与 CancelEvent 操作一起使用,以取消在对象上单击鼠标右键时发生的事件。
如果在某个控件的 OnDblClick 事件属性的设置中指定了一个包含 CancelEvent 操作的宏,该操作便会取消 DblClick 事件。
对于可以被取消的事件,事件的默认行为(即 Access 在事件发生时通常所做的操作)在事件的宏运行之后发生。这使得您可以取消默认行为。例如,当双击文本框中包含插入点的单词时,Access 通常会选定该单词。可以在 DblClick 事件的宏中取消这种默认行为,转而执行某个其他操作,例如打开一个窗体,显示有关文本框中数据的信息。对于不能被取消的事件,默认行为在宏运行之前便会发生。
注释 如果某个窗体的 OnUnload 事件属性指定了一个执行 CancelEvent 操作的宏,则不能关闭该窗体。若要关闭窗体,必须更正引起 CancelEvent 操作执行的条件,或者打开宏并删除 CancelEvent 操作。如果窗体是模式窗体,则不能打开该宏。
若要在 Visual Basic 中执行 CancelEvent 操作,可使用 DoCmd 对象的 CancelEvent 方法。
下面的验证宏检查在“供应商”窗体中输入的邮政编码。它显示 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 |
取消事件。 |