全部显示

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 事件却不能。

示例

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

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

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