我有一个访问2007前端应用程序。在特定表单上,单选按钮组中有2个单选按钮。我试图检测单选按钮组何时更改并捕获旧值和新值,但我的OldValue和Value属性在保存事件中为=,即使我已更改它。 OldValue等于New单选按钮值,而不是它最初的值。
我尝试在表单的Save子例程中对此进行编码。目的是将RB值与原始数据集值进行比较以强制设置旧值,但它不喜欢'SET'语句
If fraResistOption.Value = 1 And (IsNull([Dl_Resisted]) Or UCase([Dl_Resisted]) = "N") Then
Set fraResistOption.OldValue = 1
[Dl_Resisted] = "N"
Else
If fraResistOption.Value = 1 And (Not IsNull([Dl_Resisted]) Or UCase([Dl_Resisted]) = "Y") Then
Set fraResistOption.OldValue = 2
[Dl_Resisted] = "N"
Else
If fraResistOption.Value = 2 And (IsNull([Dl_Resisted]) Or UCase([Dl_Resisted]) = "N") Then
Set fraResistOption.OldValue = 1
[Dl_Resisted] = "Y"
Else
If fraResistOption.Value = 1 And (Not IsNull([Dl_Resisted]) Or UCase([Dl_Resisted]) = "Y") Then
Set fraResistOption.OldValue = 2
[Dl_Resisted] = "Y"
End If
End If
End If
End If
有人可以建议一种方法吗?谢谢,麻烦您了。
答案 0 :(得分:1)
选项组的.OldValue
属性(有时称为“框架”)确实有效。我有一个名为[optValues]的表:
[ID] - 自动编号
[optValue] - 数字(长整数)
它包含一条记录:
ID optValue
1 3
我的表单Record Source
是[optValues]表。表单有一个名为“Frame0”的选项组,其Control Source
是[optValue]字段。它包含三个选项按钮
标签:“foo”,值:1
label:“bar”,值:2
label:“baz”,价值:3
Frame0的After Update
事件处理程序是:
Private Sub Frame0_AfterUpdate()
MsgBox "Old value: " & Me.Frame0.OldValue & ", New value: " & Me.Frame0.Value
End Sub
当我打开表单时,选择“baz”(因为表中的[optValue]为3):
当我点击“foo”时,我立即看到(正确的)旧值和新值:
答案 1 :(得分:0)
我能想到检测和捕获Option-Group值更改的唯一方法是处理Form_Current事件(保存Option Group值),然后还处理Option-Group After事件。虽然您可以更改Option-Group.Value,但OldValue可能是受保护(只读)属性。希望以下内容有所帮助:
Dim OldValue As Byte
Dim CurrentValue As Byte
Private Sub Form_Current()
OldValue = Frame0.Value
End Sub
Private Sub Frame0_AfterUpdate()
CurrentValue = Frame0.Value
Debug.Print "AFTER: OldValue=" & OldValue & "' CurrentValue=" & CurrentValue
End Sub
答案 2 :(得分:0)
我不知道为什么但.oldvalue对我不起作用。
如果您和我在同一条船上,您可以使用optionGroup的BeforeUpdate事件并设置静态变量。 然后在afterUpdate事件中读取静态变量并重置它以进行下一次更改。