OldValue和Value相同的单选按钮更改Access 2007 VB

时间:2013-03-27 22:36:11

标签: ms-access

我有一个访问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

有人可以建议一种方法吗?谢谢,麻烦您了。

3 个答案:

答案 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):

Frame0 initial condition

当我点击“foo”时,我立即看到(正确的)旧值和新值:

AfterUpdate() MsgBox

答案 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事件中读取静态变量并重置它以进行下一次更改。