Access VBA教程:BeforeUpdate事件

BeforeUpdate事件在控件中的数据被改变或记录被更新之前发生。

说明

通过使用含有SetValue 操作的宏或 Visual Basic 来更改控件的数据时,并不触发这些事件。不过如果随后又移到另一条记录或保存这条记录,则将发生该窗体的 BeforeUpdate事件。

BeforeUpdate事件仅适用于窗体上的控件,不适用于报表上的控件。

BeforeUpdate事件不适用于选项组中的选项按钮、复选框或切换按钮,而仅适用于选项组本身。

说明

若要在该事件发生时运行宏或事件过程,请将BeforeUpdate属性设置为宏的名称或 [事件过程]。

在控件或记录更新时,将会触发 BeforeUpdate事件。在其中的一条记录中,当控件失去焦点或用户按 Enter 或 Tab 时,每个控件中被更改的数据都将更新;当焦点离开记录或用户在“记录”菜单中选择“保存记录”命令时,整条记录都将更新且数据将保存在数据库中。

在窗体的控件中输入新数据或更改数据,并移到另一条记录或在“记录”菜单中选择“保存记录”命令来保存记录时,窗体的 BeforeUpdate事件将紧跟着控件的 BeforeUpdate事件发生。移动到另一条记录时,控件的ExitLostFocus事件将发生,接着指针移到的记录的Current事件以及这条记录中第一个控件的EnterGotFocus事件发生。若要运行 BeforeUpdate 宏或事件过程而不想运行 Exit 和 LostFocus 宏或事件过程,请在“记录”菜单中选择“保存记录”命令。

BeforeUpdate 宏和事件过程只有在更改控件中的数据时才会运行。计算控件中值的改变不会触发这些事件。只有更改了记录中的一个或多个控件数据时,窗体的 BeforeUpdate 宏和事件过程才会发生。

对于窗体,可以使用 BeforeUpdate事件在移到另一记录之前取消对记录的更新。

即使用户在控件中键入了新值,OldValue属性设置仍然必须等到数据被保存(记录被更新)之后才能更改。如果取消更新,OldValue属性值将替换控件中已有的值。

通常使用 BeforeUpdate事件来验证数据的有效性,特别是在运行复杂的有效性检验时,例如:

注意  若要实施或简单或复杂的有效性规则,例如在字段中要求一个值或在窗体上验证多个控件,可以使用控件的ValidationRule属性以及表中字段和记录的 ValidationRule 和Required属性。

VBA示例

以下示例说明如何使用 BeforeUpdate事件过程来检查产品名称是否已经输入到数据库中。当用户在“产品名称”框中输入产品名称时,这个值将与“产品”表中的“产品名称”字段相比较,如果在“产品”表中有相符的值时,将显示一条消息通知用户该产品已经被输入。

若要试用该示例,请将下列事件过程添加到名为“产品”的窗体中,而且该窗体要含有一个名为“产品名称”的文本框。


Private Sub ProductName_BeforeUpdate(Cancel As Integer)
    If(Not IsNull(DLookup("[ProductName]", _
        "Products", "[ProductName] ='" _
        & Me!ProductName & "'"))) Then
        MsgBox "Product has already been entered in the database."
        Cancel = True
        Me!ProductName.Undo
    End If
End Sub

上页:Access VBA教程:BeforeScreenTip事件 下页:Access VBA教程:BeginBatchEdit事件

Access VBA教程:BeforeUpdate事件

Access VBA教程:BeginBatchEdit事件 Access VBA教程:Change事件
Access VBA教程:Click事件 Access VBA教程:Close事件
Access VBA教程:CommandBeforeExecute事件 Access VBA教程:CommandChecked事件
Access VBA教程:CommandEnabled事件 Access VBA教程:CommandExecute事件
Access VBA教程:Current事件 Access VBA教程:DataChange事件
Access VBA教程:DataSetChange事件 Access VBA教程:DblClick事件
Access VBA教程:Deactivate事件 Access VBA教程:Delete事件
Access VBA教程:Dirty事件 Access VBA教程:Enter事件
Access VBA教程:Error事件 Access VBA教程:Exit事件
Access VBA教程:Filter事件 Access VBA教程:FirstPage、LastPage、NextPage、PrevPage事件(快照查看器)
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号