【发布时间】:2019-06-19 06:00:46
【问题描述】:
我正在尝试编写一些代码来存储对正在处理的表单所做的更改(旧值和新值)。我的代码运行良好,但我的问题在于组合框及其边界。 例如,我有 Gender 组合框,它的源表如下:-
ID CODE GENDER
1 0 Male
2 1 Female
并且它被限制在列 (1) 上。 当发生变化时,可以说从男性到女性,gender.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
任何帮助将不胜感激,在此先感谢。
【问题讨论】:
-
组合框属性
OnEnter事件您将获得旧值,通过on Change事件您将获得新值。你试过这个活动吗? -
您必须在 Update 事件之前的表单中或在 Update 事件之前的单个控件中运行它,以便您对它执行任何操作。那是设置旧值属性的时候。不确定最终目标是什么?也不是每个控件都有一个 .OldValue 所以代码会在那个时候崩溃。
-
@Minty 已经在“更新前”事件中运行它,我的最终目标是将旧值和新值以及字段名称插入到新表中以跟踪更改。工作完美,我唯一的问题是我之前解释的绑定问题。
-
好的审核试用。阅读此主题,看看它是否有助于引导您朝着正确的方向前进stackoverflow.com/questions/29617067/…
-
@Minty 谢谢我检查了它,但它没有解决我的问题,正如我之前提到的,我的代码正在工作并且我没有寻找替代方案。我想解释我的问题还不够清楚.谢谢。