我正在尝试编写一些代码来存储对表单进行的更改(旧值和新值)。我的代码工作正常,但是我的问题是组合框及其边界。 例如,我有性别组合框,其源表如下:-
ID CODE GENDER
1 0 Male
2 1 Female
,并且它绑定到column(1)。 当发生变化时,可以说从Male到Female的性别。OldValue将为0,但我真正想要的是OldValue可以在Column(2)上捕获对应的值,即文本“ Male”不为0
下面的代码是我没有运气尝试过的。
Dim ctl As Access.Control
Dim old_val As String
Dim new_val As String
Dim fld_name As String
For Each ctl In Me.Controls
If ctl <> ctl.OldValue Then
fld_name = ctl.Name
old_val = ctl.OldValue.Column(2) 'or ctl.Column(2).OldValue and both gives an error
new_val = ctl.Column(2)
End If
next ctl
任何帮助将不胜感激,在此先感谢您。
答案 0 :(得分:0)
除了使用.Oldvalue绑定列之外,我认为您不能引用任何其他内容。 Combo.column(2).OldValue永远不会这样存储,因此您只能按原样“实时”引用它。
因为它是相关数据,所以我总是可以随时查找它。
答案 1 :(得分:0)
我要做的方法是使用一个未绑定的组合框,并使用VBA通过DAO或SQL甚至在隐藏的绑定控件上更改实际的字段值。
答案 2 :(得分:0)
对于任何面临相同困境的人,我能想到的唯一解决方法是采用OldValue并对其源表运行Dlookup函数。
答案 3 :(得分:0)
.OldValue
。Column(x)
以获取历史记录或其他内容。strNew = Nz(ctlX.Column(1), "*emty*")
varMemoryValueNew = ctlX.Value
ctlX.Value = ctlX.OldValue
strOld = Nz(ctlX.Column(1), "*emty*")
ctlX.Value = varMerkerValueNew