"any"コントロールが変更されたときに発生するイベントはありません。実際には、各コントロールのコードを記述しないかぎり、すべてのコントロールのイベントを発生させる開発プラットフォームは認識していません。また、それぞれのコントロールに対してコードが必要なイベントリスナークラスも含まれています。 (実際には、それぞれのコントロールのコードを書き留めてしまうので、実際には脳死の解決策になりがちです)
ただし、特定のフォームのレコードレベルのイベントがあります。したがって、ANYコントロールが変更された場合、更新前のフォームが発生します。その場合、その時点で、レコードがテーブルにコミットされる前の古い値(以前の値)と現在の値を調べることができます。だから、あなたはこのように行くことができる前に更新イベントで
:
Private Sub Form_BeforeUpdate(Cancel As Integer)
' this event does not fire UNLESS the reocrd be change,
' send to debug window each control that been changed.
Dim myControl As Control
For Each myControl In Me.Controls
Select Case myControl.ControlType
Case acTextBox, acListBox, acComboBox
' text box control, check old vs new value
' but ONLY check for controls that are bound
' to data
If myControl.ControlSource <> "" Then
If myControl.OldValue <> myControl.Value Then
Debug.Print "control " & myControl.Name & " was Changeed from" & "" & _
Nz(myControl.OldValue, "") & " ->" & Nz(myControl.Value, "")
End If
End If
End Select
Next myControl
End Sub
上記は、このように、デバッグウィンドウにユーザーによって変更されたコントロールの「リスト」をお送りします。リストボックス、コンボボックスなどの特殊なコードが必要な場合があるので、上記の選択されたケースを使用しました。
jQueryはオプションですか? –
'if me.Dirty then me.dirty = false'を使用しますか? –
@ KobiTate - 残念ながら、これはAccessアプリです。私たちは最終的にそれを移植しようとしていますが、今のところそれを救済する必要があります。 –