在用户将一条或多条记录删除到缓冲区之后、在 Microsoft Access 显示对话框询问用户确认删除操作之前,BeforeDelConfirm 事件发生。
若要在发生这些事件时运行宏或事件过程,请将 BeforeDelConfirm 属性设置为宏的名称或 [事件过程]。
当记录被删除后,它其实保存在临时缓冲区中。BeforeDelConfirm 事件发生在 Delete 事件之后(或者如果已经删除多条记录,在所有记录被删除之后,对于每一条记录都有一个 Delete 事件发生),但在显示“删除确认”对话框之前。取消 BeforeDelConfirm 事件将从缓冲区中恢复一条或多条记录,并阻止“删除确认”对话框的显示。
AfterDelConfirm 事件发生在一条或多条记录被实际删除之后,或者一个或多个删除操作被取消之后。如果 BeforeDelConfirm 事件未被取消,则在“确认删除”显示后即发生 AfterDelConfirm。即便 BeforeDelConfirm 事件被取消,AfterDelConfirm 事件仍会发生。
如果取消 Delete 事件,则 BeforeDelConfirm 事件不会发生,而“删除确认”对话框也不会显示。
注意 如果清除“选项”对话框(通过单击“工具”菜单上的“选项”命令打开)中“编辑/查找”选项卡上“确认”下的“记录更改”复选框,则 BeforeDelConfirm 事件不会发生,并且“删除确认”对话框也不会显示。
当发生 Delete 事件时,通过运行宏或事件过程,可以阻止删除某条记录或只允许在特定条件下删除记录。也可以使用 Delete 事件来显示对话框,在删除记录之前询问用户是否要删除该记录。
若要删除一条记录,可以单击“编辑”菜单上的“删除记录”。这将删除当前的记录(记录选择器所指定的记录)。也可以单击记录选择器或单击“编辑”菜单上的“选择记录”来选择记录,然后按 Del 将它删除。如果单击“删除记录”、当前记录的记录选择器或“选择记录”,则焦点所在控件的 Exit 和 LostFocus 事件将会发生。如果已经更改了记录中的任意数据,则记录的 BeforeUpdate 和 AfterUpdate 事件将在 Exit 和 LostFocus 事件之前发生。如果单击另一条记录的记录选择器,该记录的 Current 事件也会发生。
删除记录之后,焦点将移到被删除记录的下一条记录,并且这条记录的 Current 事件将会发生,随后该记录中第一个控件的 Enter 和 GotFocus 事件也随之发生。
接下来就在 Microsoft Access 显示“删除确认”对话框询问用户确认删除之前,BeforeDelConfirm 事件发生。在通过确认选项或取消删除选项来响应对话框之后,AfterDelConfirm 事件发生。
可以同时删除一条或多条记录。Delete 事件是在每条记录被删除之后发生,这使用户可以在记录被真正删除之前访问每条记录中的数据,并且可以在 Delete 宏或事件过程中有选择性地确认或取消每个删除操作。当删除多条记录时,对于最后一条被删除记录的下一条记录,其 Current 事件和该记录中第一个控件的 Enter 和 GotFocus 事件直到所有记录都被删除后才发生。也就是说,每条选定记录的 Delete 事件都会发生,而且必须所有的选定记录都已删除后才允许其他事件发生。BeforeDelConfirm 事件也在所有选定记录被删除之后才发生。
以下示例显示如何使用 BeforeDelConfirm 事件过程,以便在记录被删除时不显示“删除确认”对话框,而显示自定义对话框。
Private Sub Form_BeforeDelConfirm(Cancel As Integer, _
Response As Integer)
' Suppress default Delete Confirm dialog box.
Response = acDataErrContinue ' Display custom dialog box.
If MsgBox("Delete this record?", vbOKCancel) = vbCancel Then
Cancel = True
End If
End Sub