【发布时间】:2016-05-15 11:03:40
【问题描述】:
我有一个使用多值字段的 Access 2010 数据库(Access 的内置方式可以在两个表之间建立 m:n 关系)。
为了跟踪对数据库的更改,每次更新相应的表单时,我都会使用 AuditTrail VBA 过程,将所有更改保存到历史表中。
现在,当我更改 ComboBox 的值并且循环到达绑定到多值字段的 ComboBox 时,由于数据类型不兼容,该过程会引发错误:
For Each ctl In Screen.ActiveForm.Controls
If ctl.Tag = "History" Then
If Nz(ctl.Value) <> Nz(ctl.OldValue) Then
With rst
.AddNew
![timestamp] = datTimeCheck
![UserName] = strUserID
![FormName] = Screen.ActiveForm.Name
![recordid] = Screen.ActiveForm.Controls(IDField).Value
![FieldName] = ctl.ControlSource
![beforeValue] = ctl.OldValue
![afterValue] = ctl.Value
.Update
End With
End If
End If
Next ctl
如何从在 VBA 中转换为字符串的组合框中获取实际的 Value 和 OldValue?
我尝试了combobox.focus 然后combobox.Text
这可行,但对OldValue 问题没有帮助。
如何正确使用组合框的value 和oldvalue 属性?组合框的官方 VBA 对象参考根本没有帮助。
https://msdn.microsoft.com/en-us/library/office/ff821691.aspx
【问题讨论】:
-
感谢@Andre 的更改。我不是本地人,我的访问权限是德语,所以我必须翻译所有内容^^
标签: ms-access combobox vba ms-access-2010 audit-trail