我有一个审计跟踪,它使用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`
我遇到的问题是用户进行了两次更改,我的更改历史记录表中记录了三件事-第一次更改记录两次,第二次更改记录一次(只要用户从不离开,这种趋势就会持续记录)。我想要做的是能够识别触发BeforeUpdate
事件的控件并将其传递给上面的代码,以便它可以检查是否只有触发BeforeUpdate
事件的控件不同并跳过已经记录的其他控件。或者,有没有办法阻止 Access 将记录的更改视为新更改?