在用户执行某些操作(例如,按下 Delete 删除一条记录)来删除记录、记录实际上被删除之前,Delete 事件发生。
Private Sub Form_Delete(Cancel As Integer)
Cancel 该设置确定是否发生 Delete 事件。将 Cancel 参数设为 True (–1) 可取消 Delete 事件。
若要在这些事件发生时执行宏或事件过程,请将 OnDelete、BeforeDelConfirm 或 AfterDelConfirm 属性设置为宏的名称或 [事件过程]。
当记录被删除后,它其实保存在临时缓冲区中。BeforeDelConfirm 事件发生在 Delete 事件之后(或者如果已经删除多条记录,在所有记录被删除之后每条记录都有一个 Delete 事件发生)、在“删除确认”对话框显示之前。取消 BeforeDelConfirm 事件将从缓冲区中恢复一条或多条记录,并阻止“删除确认”对话框的显示。
AfterDelConfirm 事件发生在一条或多条记录实际上被删除之后,或者一个或多个删除操作被取消之后。如果 BeforeDelConfirm 事件没有被取消,在显示“删除确认”对话框之后将发生 AfterDelConfirm 事件。即使 BeforeDelConfirm 事件已被取消,AfterDelConfirm 事件仍将发生。AfterDelConfirm 事件过程将返回有关删除的状态信息。例如,可以使用与 AfterDelConfirm 事件相关的宏或事件过程来重新计算受删除记录影响的总计。
如果取消 Delete 事件,BeforeDelConfirm 和 AfterDelConfirm 事件将不会发生,并且“删除确认”对话框也不会显示。
注释 如果清除“选项”对话框(通过单击“工具”菜单上的“选项”即可打开)中“编辑/查找”选项卡上“确认”下面的“记录更改”复选框,则 BeforeDelConfirm 和 AfterDelConfirm 事件将不会发生,并且“删除确认”对话框也不会显示。
当 Delete 事件发生时,通过运行宏或事件过程,可以阻止记录被删除或只允许在特定条件下删除记录。也可以使用 Delete 事件来显示对话框,在记录被删除之前询问用户是否要删除该记录。
若要删除一条记录,可以单击“编辑”菜单上的“删除记录”。这将删除当前的记录(记录选定器所指定的记录)。也可以单击记录选定器或单击“编辑”菜单上的“选择记录”来选择记录,然后按 Del 将它删除。如果单击“删除记录”、当前记录的记录选定器或“选择记录”,则焦点所在的控件的 Exit 和 LostFocus 事件将会发生。如果已经更改了记录中的任意数据,则记录的 BeforeUpdate 和 AfterUpdate 事件将发生在 Exit 和 LostFocus 事件之前。如果单击另一条记录的记录选定器,选定记录的 Current 事件也会发生。
删除记录之后,焦点将移动到被删除记录的下一条记录,并且这条记录的 Current 事件将会发生,接着该记录中第一个控件的 Enter 和 GotFocus 事件随之发生。
接下来就在 Microsoft Access 显示“删除确认”对话框询问用户确认删除之前,BeforeDelConfirm 事件发生。在确认选项或取消删除选项来响应对话框之后,AfterDelConfirm 事件发生。
可以同时删除一条或多条记录。Delete 事件是在每条记录被删除之后发生,这使用户可以在记录被真正删除之前访问每条记录中的数据,并且可以在 Delete 宏或事件过程中有选择地确认或取消每个删除操作。当删除多条记录时,对于最后一条被删除记录的下一条记录,其 Current 事件和该记录中第一个控件的 Enter 和 GotFocus 事件直到所有记录都被删除后才发生。也就是说,每条选定记录的 Delete 事件都会发生,而且必须所有的选定记录都已删除后才允许其他事件发生。BeforeDelConfirm 和 AfterDelConfirm 事件也在所有选定记录被删除之后才发生。
在删除记录前,可以使用 Delete 宏显示“删除确认”对话框,以询问用户是否要删除记录。
无论何时删除记录,都可以使用 BeforeDelConfirm 或 AfterDelConfirm 宏进行响应。但是,BeforeDelConfirm 和 AfterDelConfirm 宏无法设置确定是否显示“删除确认”对话框的参数,也无法返回指明删除状态的参数,因此通常要用事件过程处理这些事件。
可以在 Delete 宏中使用 CancelEvent 操作来取消删除。
可以在 BeforeDelConfirm 宏中使用 CancelEvent 操作来取消对所有已删除记录进行的删除。如果这样做,将不显示“删除确认”对话框。但是,如果取消 BeforeDelConfirm 事件,则会发生 AfterDelConfirm 事件。
不能在 AfterDelConfirm 宏中使用 CancelEvent 操作。
下面的示例显示阻止用户从表中删除记录的过程。
若要试用该示例,请将下列事件过程添加到基于表的窗体中。切换到窗体“数据表”视图并且试着删除一条记录。
Private Sub Form_Delete(Cancel As Integer)
Cancel = True
MsgBox "This record can't be deleted."
End Sub