在用户将一条或多条记录删除到缓冲区之后、在 Microsoft Access 显示对话框询问用户确认删除操作之前,BeforeDelConfirm 事件发生。
Private Sub Form_BeforeDeleteConfirm(Cancel As Integer, Response As Integer)
Cancel 该设置确定是否发生 BeforeDelConfirm 事件。将 Cancel 参数设为 True 可取消 BeforeDelConfirm 事件并阻止显示“删除确认”对话框。如果取消了该事件,则会恢复原始记录,但是 AfterDelConfirm 事件仍旧会发生。如果 Cancel 设为 True,会忽略 Response 参数。默认情况下,Cancel 会设为 False (0),如果这样,Microsoft Access 会使用 Response 参数值确定对 delete 事件的响应类型。
Response 该设置确定 Microsoft Access 是否显示“删除确认”对话框以询问是否应该删除记录。Response 参数可设为以下固有常量之一:
常量说明
acDataErrContinue 继续而不显示“删除确认”对话框。如果将 Cancel 参数设为 False 并且将 Response 参数设为 acDataErrContinue,Microsoft Access 可以在不提示用户的情况下删除记录。
acDataErrDisplay(默认值)显示“删除确认”对话框。
若要在发生这些事件时运行宏或事件过程,请将 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 事件也在所有选定记录被删除之后才发生。
使用 Delete 宏,可以在删除记录前显示“删除确认”对话框,询问用户是否要删除记录。
无论何时删除记录,都可以使用 BeforeDelConfirm 或 AfterDelConfirm 宏进行响应。但是,BeforeDelConfirm 和 AfterDelConfirm 宏无法设置确定是否显示“删除确认”对话框的参数,也无法返回指明删除状态的参数,因此通常要用事件过程处理这些事件。
可以在 Delete 宏中使用 CancelEvent 操作来取消删除。
可以在 BeforeDelConfirm 宏中使用 CancelEvent 操作来取消对所有已删除记录进行的删除操作。如果这样做,不会显示“删除确认”对话框。但是如果您取消 BeforeDelConfirm 事件,则会发生 AfterDelConfirm 事件。
不能在 AfterDelConfirm 宏中使用 CancelEvent 操作。
以下示例演示了如何使用 BeforeDelConfirm 事件过程禁止“删除确认”对话框在删除记录时显示和显示自定义对话框。它还演示了如何使用 AfterDelConfirm 事件过程显示一条消息,指出删除操作是否按通常的方法进行,以及是在 Visual Basic 中取消删除还是由用户取消删除。
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
Private Sub Form_AfterDelConfirm(Status As Integer)
Select Case Status
Case acDeleteOK
MsgBox "Deletion occurred normally."
Case acDeleteCancel
MsgBox "Programmer canceled the deletion."
Case acDeleteUserCancel
MsgBox "User canceled the deletion."
End Select
End Sub