当用户在新记录中键入第一个字符时,并且在实际创建该记录之前,将发生 BeforeInsert 事件。
Private Sub Form_BeforeInsert(Cancel As Integer)
Cancel 该设置确定是否发生 BeforeInsert 事件。将 Cancel 参数设为 True (–1) 将取消 BeforeInsert 事件。
注释 通过使用宏或 Visual Basic 来设置控件值时不会触发这些事件。
若要在这些事件发生时运行宏或事件过程,请将 BeforeInsert 或 AfterInsert 属性设置为宏的名称或 [事件过程]。
每当添加新记录时,都可以使用 AfterInsert 事件过程或宏对记录集进行重新查询。
BeforeInsert 和 AfterInsert 事件与 BeforeUpdate 和 AfterUpdate 事件相似。这些事件按照下列顺序发生:
BeforeInsert → BeforeUpdate → AfterUpdate → AfterInsert.
下表总结了这些事件的交互操作:
事件 |
发生时间 |
BeforeInsert |
用户在新记录中键入第一个字符。 |
BeforeUpdate |
用户更新记录。 |
AfterUpdate |
记录被更新后。 |
AfterInsert |
更新的记录是一条新记录。 |
如果新记录中的第一个字符键入到文本框或组合框中,则 BeforeInsert 事件将在 Change 事件之前发生。
可以使用这些宏显示消息或有用信息。例如,可以让 BeforeInsert 宏在用户输入新记录时显示用户需要的数据。
可以在 BeforeInsert 宏中使用 CancelEvent 操作来取消新建记录。在 BeforeInsert 宏中使用 CancelEvent 操作时,焦点会返回到新记录(该记录为空,用户在该记录中键入的字符已被删除)。
不能在 AfterInsert 宏中使用 CancelEvent 操作。
该示例显示了如何使用 BeforeInsert 事件过程来验证用户是否新建记录,并且在添加新记录之后,使用 AfterInsert 事件过程来重新查询“雇员”窗体的记录源。
若要试用该示例,请将下列事件过程添加到基于表或查询的、名为“雇员”的窗体中。切换到窗体“数据表”视图并且试着插入一条记录。
Private Sub Form_BeforeInsert(Cancel As Integer)
If MsgBox("Insert new record here?", _
vbOKCancel) = vbCancel Then
Cancel = True
End If
End Sub
Private Sub Form_AfterInsert()
Forms!Employees.Requery
End Sub