共用方式為


Access (的 Form.Dirty 事件)

Dirty事件發生於指定控制項的內容變更時。

語法

運算式中途 (取消)

expression 代表 Form 物件的變數。

參數

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

註解

此事件的範例包括直接在文字方塊或下拉式方塊中輸入字元,或來使用巨集或 Visual Basic 變更控制項的 Text 屬性設定。

使用巨集或 Visual Basic 中修改表單內的記錄不會觸發此事件。 您必須將資料直接輸入記錄或設定控制項的 Text 屬性。

此事件僅適用於結合表單,並不適用於未結合表單或報表。

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

藉由在 Dirty 事件發生時執行宏或事件程序,您可以判斷是否可以變更記錄。 您也可以顯示訊息並要求編輯許可權。

使用鍵盤變更記錄中的資料,除了會發生 Dirty 事件之類的控制事件之外,還會發生鍵盤事件。 例如,如果您移到一個新的記錄,並在記錄的文字方塊中輸入一個 ANSI 字元,就會依次發生下列事件:

KeyDownKeyPressBeforeInsertDirtyKeyUp

記錄的BeforeUpdateAfterUpdate事件發生于您在記錄中輸入新的或變更的資料,並移至另一筆記錄 (或選擇 [記錄] 功能表上的[儲存記錄]) ,因此在記錄的Dirty事件之後。

取消 Dirty 事件會導致回復目前記錄的變更。 這相當於按下 Esc 鍵。

範例

下列範例會在資料變更時啟用 btnUndo 按鈕。 UndoEdits ( ) 副程式是從文字方塊控制項的Dirty事件呼叫。 按一下已啟用的 btnUndo 按鈕會使用 OldValue 屬性還原控制項的原始值。

Private Sub Form_Dirty() 
 If Me.Dirty Then 
 Me!btnUndo.Enabled = True ' Enable button. 
 Else 
 Me!btnUndo.Enabled = False ' Disable button. 
 End If 
End Sub 
 
Sub btnUndo_Click() 
 Dim ctlC As Control 
 ' For each control. 
 For Each ctlC in Me.Controls 
 If ctlC.ControlType = acTextBox Then 
 ' Restore Old Value. 
 ctlC.Value = ctlC.OldValue 
 End If 
 Next ctlC 
End Sub

支援和意見反應

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