Access VBA教程:Open事件

在窗体已打开,但第一条记录尚未显示时,Open事件发生。对于报表,事件发生在报表被预览或被打印之前。

说明

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

在窗体的 Open事件发生时,通过运行宏或事件过程可以关闭另一个窗口,或者将焦点移到窗体中某一特定的控件上。也可以运行宏或事件过程,在窗体或报表被打开或打印之前询问所需信息。例如,Open 宏或事件过程可以打开一个用于输入条件以限制窗体上显示的记录集或报表中包含的数据范围的自定义对话框。

在激活一个已经打开的窗体时,Open事件不会发生。例如,当从 Microsoft Access 中的另一个窗口切换到窗体,或使用宏中的OpenForm 操作将已打开的窗体置于最上面时,该事件都不会发生。但是,在这些情况下将发生Activate事件。

当打开基于基础查询的窗体时,Microsoft Access 在运行 Open 宏或事件过程之前将运行窗体的基础查询。但在打开基于该基础查询的报表时,Microsoft Access 在运行 Open 宏或事件过程之后才运行报表的基础查询,后者是为了使用户能在报表打开之前指定报表的条件,例如,当 Open事件发生时,可显示一个自定义对话框对条件进行指定。

如果应用程序能够同时加载多个窗体,请用 Activate 和Deactivate事件代替 Open事件,以便焦点移动到不同窗体时显示和隐藏自定义工具栏。

Open事件发生在Load事件之前,在窗体打开并显示其记录时触发该事件。

首次打开窗体时,下列事件将按如下顺序发生:

Open ==> Load ==> Resize ==> Activate ==> Current

Close事件发生在Unload事件之后。在窗体关闭之后但在从屏幕上删除之前触发该事件。

关闭窗体时,事件按照以下顺序发生:

Unload ==> Deactivate ==> Close

当 Close事件发生时,可以打开另一个窗口或要求输入用户名称来产生日志记录项,以标明使用该窗体或报表的用户。

如果想确定在宏或事件过程使用 Open事件还是使用 Load事件,则请注意这两者间的一个显著差别:Open事件能被取消,而 Load事件不能被取消。例如,如果在一个事件过程中为窗体的 Open事件动态创建窗体的记录源,如果没有记录可显示,则可以取消窗体的打开操作。同样,Unload事件也能被取消,但 Close事件却不能。

VBA示例

下面的示例用于显示在用户单击“否”按钮时,如何取消窗体的打开操作。消息框提示用户输入订单的详细信息。如果用户单击“否”,则“订单明细”窗体将不打开。

若要试用该示例,请将下列事件过程添加到窗体中。


Private Sub Form_Open(Cancel As Integer)
    Dim intReturn As Integer
    intReturn = MsgBox("Enter order details now?", vbYesNo)
    Select Case intReturn
        Case vbYes
            ' Open Order Details form.
            DoCmd.OpenForm "Order Details"
        Case vbNo
            MsgBox "Remember to enter order details by 5 P.M."
            Cancel = True                    ' Cancel Open event.
    End Select
End Sub

上页:Access VBA教程:OnDisconnect事件 下页:Access VBA教程:Page事件

Access VBA教程:Open事件

Access VBA教程:Page事件 Access VBA教程:PivotTableChange事件
Access VBA教程:Print事件 Access VBA教程:Progress事件 (Snapshot Viewer)
Access VBA教程:Query事件 Access VBA教程:ReadyStateChange事件 (Snapshot Viewer)
Access VBA教程:RecordExit事件 Access VBA教程:Resize事件
Access VBA教程:Retreat事件 Access VBA教程:RollbackTransaction事件
Access VBA教程:SelectionChange事件 Access VBA教程:Terminate事件
Access VBA教程:Timer事件 Access VBA教程:Undo事件
Access VBA教程:UndoBatchEdit事件 Access VBA教程:Unload事件
Access VBA教程:Updated事件 Access VBA教程:ViewChange事件
Access VBA教程:Command函数 Access VBA教程:DAvg函数
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号