首页 > 解决方案 > 参考拆分表格?审计表没有选择 VBA

问题描述

我正在尝试在 MS Access 中创建审计跟踪表单。审计表没有把它捡起来。我对在 VBA sctript 中引用表单有疑问。谁能帮忙,如何引用拆分表格?如果以下脚本不正确。谢谢

Option Compare Database

Public Function AuditChanges(RecordID As String, UserAction As String)
On Error GoTo auditerr

Dim DB As DAO.Database
Dim rst As DAO.Recordset
Dim clt As Control
Dim UserLogin As String

Set DB = CurrentDb
Set rst = DB.OpenRecordset("select * from AuditTrail", dbOpenDynaset)

UserLogin = Environ("UserName")
Select Case UserAction
Case "new"
With rst
.AddNew
![DateTime] = Now()
!UserName = UserLogin
!FormName = Screen.ActiveForm.ActiveControl.Form.Name
!Action = UserAction
!RecordID = Screen.ActiveForm.ActiveControl.Form(RecordID).Value
.Update

End With


Case "Delete"
With rst
.AddNew
![DateTime] = Now()
!UserName = UserLogin
!FormName = Screen.ActiveForm.Name
!Action = UserAction
!RecordID = Screen.ActiveForm.Controls(RecordID).Value
.Update
End With

Case "Edit"
For Each clt In InScreen.ActiveForm.ActiveControl.Form
If (clt.ControlType = acTextBox _
Or clt.ControlType = acComboBox) Then
If Nz(clt.Value) <> Nz(clt.OldValue) Then
With rst
.AddNew
![DateTime] = Now()
!UserName = UserLogin
!FormName = Screen.ActiveForm.Name
!Action = UserAction
!RecordID = Screen.ActiveForm.Controls(RecordID).Value
!FieldName = clt.ControlSource
!OldValue = clt.OldValue
!newValue = clt.Value
.Update
End With
End If
End If
Next clt
End Select
rst.Close
DB.Close
Set rst = Nothing
Set DB = Nothing

auditerr:
'MsgBox Err.Number & " : " & Err.Description, vbCritical, "Error"
Exit Function



End Function

没有具体错误,但跟踪表没有被拾取/更新。

标签: vbams-access

解决方案


假设记录已成功添加到您的AuditTrail表中,您应该在修改基础表中保存的数据后调用Requery表单的方法。


推荐阅读