BeforeUpdate
次のコードを使用して、イベントを使用してサブフォームで行われた変更を追跡する監査証跡があります。
`Dim USR As String
Dim TS As Date
Dim Connection As ADODB.Connection
Dim RecordSet As ADODB.RecordSet
Dim Ctl As Control
MsgBox "Here!"
Set Connection = CurrentProject.Connection
Set RecordSet = New ADODB.RecordSet
If Forms![PartsDatabaseX]![RepsSubformX].Visible = True Then
For Each Ctl In Screen.ActiveForm.RepsSubformX.Form.Controls
If Ctl.Tag = "Track" Then
If Nz(Ctl.Value) <> Nz(Ctl.OldValue) Then
SaveToken = True
With RecordSet
.AddNew
![Part Number] = Screen.ActiveForm.RepsSubformX.Form.Controls("[Part Nbr]").Value
![Record Identifier] = Screen.ActiveForm.RepsSubformX.Form.Controls("[Part Nbr]").Value & Screen.ActiveForm.RepsSubformX.Form.Controls("[Supplier Name]").Value
![Rep] = USR
![Time Stamp] = TS
![Change Point] = Ctl.ControlSource
![Change From] = Ctl.OldValue
![Change To] = Ctl.Value
.Update
End With
End If
End If
Next Ctl
End If`
私が抱えている問題は、ユーザーが 2 つの変更を行い、変更履歴テーブルに 3 つのことが記録されていることです。最初の変更は 2 回、2 回目の変更は 1 回です (この傾向は、ユーザーが離れない限り続きます)。記録)。私がやりたいのは、イベントをトリガーしたコントロールを特定してBeforeUpdate
上記のコードに渡すことで、イベントをトリガーしたコントロールだけBeforeUpdate
が異なるかどうかを確認し、すでにログに記録されている他のコントロールをスキップできるようにすることです。または、Access がログに記録された変更を新しいものとして認識しないようにする方法はありますか?