【发布时间】:2018-01-26 09:08:47
【问题描述】:
我看过这个帖子:Saving changes to a multivalued ComboBox via AuditTrail
并试图获取花絮并将其放入我的代码中,但它不起作用!我不太擅长 SQL,但我需要完成这项工作。这是我的代码,它适用于文本框,但有人可以告诉我确切的位置和确切的内容,我需要为我的组合框下拉列表更改放置什么?
提前致谢!!
Function LogChanges(lngID As Long, Optional strField As String = "")
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim varOld As Variant
Dim varNew As Variant
Dim strFormName As String
Dim strControlName As String
varOld = Screen.ActiveControl.OldValue
varNew = Screen.ActiveControl.Value
strFormName = Screen.ActiveForm.NAME
strControlName = Screen.ActiveControl.NAME
Set dbs = CurrentDb()
Set rst = dbs.TableDefs("ztblDataChanges").OpenRecordset
With rst
.AddNew
!FormName = strFormName
!ControlName = strControlName
If strField = "" Then
!FieldName = strControlName
Else
!FieldName = strField
End If
!RecordID = lngID
!UserName = Environ("username")
If Not IsNull(varOld) Then
!OldValue = CStr(varOld)
End If
!NewValue = CStr(varNew)
.Update
End With
'clean up
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
End Function
【问题讨论】:
-
“它不起作用”是什么意思?请更好地描述您想要做什么、做了什么、预期会发生什么以及您观察到的情况(包括任何错误消息)。
-
请注意,在 Access 中使用 VBA 的审计跟踪很容易绕过,即使您正在使用已编译的数据库文件。在 Access 中,审计的首选选项是数据宏。有关示例实现,请参阅 this page。
-
我最初用宏,newold 做审计功能,但发现代码更好,审计表字段也不多。当我提到它不起作用时-让我更好地解释一下。我正在创建一个库存调度数据库。有 8 个可能的季度日期更改是文本框。审核代码获取对这些文本框的更改。我还需要用户在库存日期更改时必须使用的“更改原因”和“更改发起者”下拉列表。有 8 个变更原因和 5 个发起人可供选择。对这些下拉列表中的任何一个所做的更改都不会显示在审核表中。
-
可能不需要这些,但是审计表字段有:LogID、FormName、ControlName、FieldName、RecordID、UserName、OldValue、NewValue、TimeStamp
-
我想我可以将宏和那些字段添加回表中,只为新旧下拉字段......宏确实适用于这些。
标签: vba ms-access drop-down-menu combobox audit-logging