共用方式為


ComboBox.BeforeUpdate 事件 (存取)

BeforeUpdate 事件會在變更的資料控制項或記錄會更新之前發生。

語法

表達。更新前 (取消)

代表 ComboBox 物件的變數。

參數

名稱 必要/選用 資料類型 描述
Cancel 必要 Integer 設定決定 BeforeUpdate 事件會發生。 將 Cancel 引數設定為 True (1) 會取消 BeforeUpdate 事件。

註解

使用 Visual Basic 或含有 SetValue 巨集指令的巨集來變更控制項中的資料不會觸發這些事件的控制項。 不過,如果將移至另一筆記錄或儲存記錄,該表單的 BeforeUpdate 事件沒有發生。

若要在發生此事件時執行巨集或事件程序,請將 BeforeUpdate 屬性設定為巨集的名稱或 [事件程序]。

此事件不適用於選項群組中的選項按鈕、核取方塊或切換按鈕。 它只適用於選項群組本身。

BeforeUpdate 事件觸發控制項或記錄更新時。 在記錄中,當控制項失去焦點或使用者按 Enter 或 Tab 時,每個控制項中的變更資料都會更新。當焦點離開記錄時,或使用者按一下 [記錄] 功能表上的 [儲存記錄] 時,會更新整個記錄,並將資料儲存在資料庫中。

當您在表單的控制項中輸入新的或變更的資料,然後移至另一筆記錄,或按一下 [記錄] 功能表上的 [儲存記錄] 來儲存記錄時,表單的 AfterUpdate 事件會緊接在控制項的 AfterUpdate 事件之後發生。

當您移至不同的記錄時,會發生控制項的 ExitLostFocus 事件,後面接著您移至之記錄的 [目前] 事件,以及此記錄中第一個控制項的 EnterGotFocus 事件。 若要執行的 AfterUpdate 巨集或事件程序不執行 退出LostFocus 巨集或事件程序,請使用 [ 儲存記錄 ] 命令 記錄 ] 功能表上儲存記錄。

BeforeUpdate 巨集和事件程序執行只有當您變更控制項中的資料。 當計算控制項中的某個值有所變更時不會發生此事件。 BeforeUpdate 巨集和表單事件程序執行只有當您變更一筆記錄的一或多個控制項中的資料。

處理表單時,您可以使用 BeforeUpdate 事件取消記錄的更新將移至另一筆記錄之前。

如果使用者在控制項中輸入新值, OldValue 屬性設定無法變更之前儲存的資料 (記錄被更新)。 如果您取消更新, OldValue 屬性的值會取代為控制項中現有的值。

您若要驗證資料,特別是在執行複雜驗證時,例如會經常用 到 BeforeUpdate 事件的:

  • 條件涉及表單上的多個值。
  • 輸入不同的資料時顯示不同的錯誤訊息。
  • 使用者可覆寫資料。
  • 含有對其他表單上之控制項的參照,或含有使用者定義的函數。

注意事項

[!注意事項] 若要執行簡單驗證或例如需要中欄位的值,或是驗證表單上的多個控制項更複雜的驗證,您可以使用 ValidationRule 屬性的控制項和欄位及記錄在表格中的 ValidationRule必要 屬性。

如果您嘗試修改在事件程式中引發 BeforeUpdate 事件的控制項中包含的資料,就會發生執行階段錯誤。

範例

下列範例顯示如何使用 BeforeUpdate 事件程序以檢查產品名稱是否已輸入的資料庫中。 使用者在 [ProductName] 方塊中輸入產品名稱後,會將該值與 [Products] 資料表中的 [ProductName] 欄位進行比較。 如果 「產品 」表中有相符的值,則會顯示一則訊息,通知使用者產品已輸入。

若要嘗試此範例,請將下列事件程式新增至名為 Products 的表單,其中包含名為 ProductName 的文字方塊。

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

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應