Access (的 Form.Dirty 事件)
Dirty事件發生於指定控制項的內容變更時。
語法
運算式。中途 (取消)
expression 代表 Form 物件的變數。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
Cancel | 必要 | Integer | 設定決定 Dirty 事件發生於。 將 Cancel 引數設定為 True (1) 會取消 Dirty 事件。 |
註解
此事件的範例包括直接在文字方塊或下拉式方塊中輸入字元,或來使用巨集或 Visual Basic 變更控制項的 Text 屬性設定。
使用巨集或 Visual Basic 中修改表單內的記錄不會觸發此事件。 您必須將資料直接輸入記錄或設定控制項的 Text 屬性。
此事件僅適用於結合表單,並不適用於未結合表單或報表。
若要發生此事件時執行巨集或事件程序,將 OnDirty 屬性設定為巨集名稱或 [事件程序]。
藉由在 Dirty 事件發生時執行宏或事件程序,您可以判斷是否可以變更記錄。 您也可以顯示訊息並要求編輯許可權。
使用鍵盤變更記錄中的資料,除了會發生 Dirty 事件之類的控制事件之外,還會發生鍵盤事件。 例如,如果您移到一個新的記錄,並在記錄的文字方塊中輸入一個 ANSI 字元,就會依次發生下列事件:
KeyDown → KeyPress → BeforeInsert → Dirty → KeyUp
記錄的BeforeUpdate和AfterUpdate事件發生于您在記錄中輸入新的或變更的資料,並移至另一筆記錄 (或選擇 [記錄] 功能表上的[儲存記錄]) ,因此在記錄的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 支援與意見反應。