Open 事件

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

窗體已打開,但第一條記錄尚未顯示時(shí),Open 事件發(fā)生。對(duì)于報(bào)表,事件發(fā)生在報(bào)表被預(yù)覽或被打印之前。

Private Sub object_Open(Cancel As Integer)

Object    窗體或報(bào)表的名稱。

Cancel    該設(shè)置確定是否打開窗體或報(bào)表。將 Cancel 參數(shù)設(shè)為 True (–1) 可取消打開窗體或報(bào)表。

說明

若要在該事件發(fā)生時(shí)運(yùn)行事件過程,請(qǐng)將 OnOpen 屬性設(shè)置為宏的名稱或 [事件過程]。

在窗體的 Open 事件發(fā)生時(shí),通過運(yùn)行宏或事件過程可以關(guān)閉另一個(gè)窗口,或者將焦點(diǎn)移到窗體中某一特定的控件上。也可以運(yùn)行宏或事件過程,在窗體或報(bào)表被打開或打印之前詢問所需信息。例如,Open 宏或事件過程可以打開一個(gè)用于輸入條件以限制窗體上顯示的記錄集或報(bào)表中包含的數(shù)據(jù)范圍的自定義對(duì)話框。

當(dāng)激活一個(gè)已打開的窗體時(shí),Open 事件不會(huì)發(fā)生。例如,當(dāng)在本窗口以及 Microsoft Access 中的另一個(gè)窗口之間來回切換,或使用宏中的 OpenForm 操作將已打開的窗體置于最上面時(shí),Open 事件不會(huì)發(fā)生。但是,下列情況下,Activate 事件發(fā)生。

當(dāng)打開基于基礎(chǔ)查詢的窗體時(shí),Microsoft Access 在運(yùn)行 Open 宏或事件過程之前將運(yùn)行窗體的基礎(chǔ)查詢。但在打開基于該基礎(chǔ)查詢的報(bào)表時(shí),Microsoft Access 在運(yùn)行 Open 宏或事件過程之后才運(yùn)行報(bào)表的基礎(chǔ)查詢,后者是為了使用戶能在報(bào)表打開之前指定報(bào)表的條件,例如,當(dāng) Open 事件發(fā)生時(shí),可顯示一個(gè)自定義對(duì)話框?qū)l件進(jìn)行指定。

如果應(yīng)用程序能夠同時(shí)加載多個(gè)窗體,請(qǐng)用 Activate 和 Deactivate 事件代替 Open 事件,以便焦點(diǎn)移動(dòng)到不同窗體時(shí)顯示和隱藏自定義工具欄。

Open 事件發(fā)生在 Load 事件之前,在窗體打開并顯示其記錄時(shí)觸發(fā)該事件。

首次打開窗體時(shí),下列事件將按如下順序發(fā)生:

Open → Load → Resize → Activate → Current

Close 事件發(fā)生在 Unload 事件之后。在窗體關(guān)閉之后但在從屏幕上刪除之前觸發(fā)該事件。

關(guān)閉窗體時(shí),事件按照以下順序發(fā)生:

Unload → Deactivate → Close

當(dāng) Close 事件發(fā)生時(shí),可以打開另一個(gè)窗口或要求輸入用戶名稱來產(chǎn)生日志記錄項(xiàng),以標(biāo)明使用該窗體或報(bào)表的用戶。

如果想確定在宏或事件過程使用 Open 事件還是使用 Load 事件,則請(qǐng)注意這兩者間的一個(gè)顯著差別:Open 事件能被取消,而 Load 事件不能被取消。例如,如果在一個(gè)事件過程中為窗體的 Open 事件動(dòng)態(tài)創(chuàng)建窗體的記錄源,如果沒有記錄可顯示,則可以取消窗體的打開操作。同樣,Unload 事件也能被取消,但 Close 事件卻不能。

可以在 Open 宏中使用 CancelEvent 操作來取消打開窗體或報(bào)表的操作。不能在 Close 宏中使用 CancelEvent 操作取消 Close 事件。但可以在窗體發(fā)生 Unload 事件時(shí)所運(yùn)行的宏中使用 CancelEvent 操作。

如果要在 Open 宏中引用控件,則必須先將焦點(diǎn)移到適當(dāng)?shù)目丶蛴涗浬?。例如,若要?Open 宏中使用 SetValue 操作來為窗體上的控件設(shè)置值,必須使用 GoToControl 或 GoToRecord 操作訪問該控件或訪問包含該控件的記錄。

示例

下面的示例用于顯示在用戶單擊“否”按鈕時(shí),如何取消窗體的打開操作。消息框提示用戶輸入訂單的詳細(xì)信息。如果用戶單擊“否”,則“訂單明細(xì)”窗體將不打開。

若要試用該示例,請(qǐng)將下列事件過程添加到窗體中。

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