1

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

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

4

3 回答 3

1

选项组(有时称为“框架”)的.OldValue属性确实有效。我有一个名为 [optValues] 的表:

[ID] - 自动编号
[optValue] - 数字(长整数)

它包含一条记录:

ID  optValue
1   3

我的表单Record Source是 [optValues] 表。该表单有一个名为“Frame0”的选项组,它Control Source是 [optValue] 字段。它包含三个选项按钮

标签:“foo”,值:1
标签:“bar”,值:2
标签:“baz”,值:3

After UpdateFrame0的事件处理程序是:

Private Sub Frame0_AfterUpdate()
MsgBox "Old value: " & Me.Frame0.OldValue & ", New value: " & Me.Frame0.Value
End Sub

当我打开表单时,选择了“baz”(因为表中的 [optValue] 为 3):

Frame0 初始条件

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

AfterUpdate() 消息框

于 2013-03-28T08:26:44.667 回答
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
于 2013-03-27T23:45:13.413 回答
0

我不知道为什么,但 .oldvalue 对我不起作用。

如果你和我在同一条船上,你可以使用 optionGroup 的 BeforeUpdate 事件并设置一个静态变量。然后在 afterUpdate 事件中读取静态变量并将其重置以进行下一次更改。

于 2013-03-28T09:07:43.237 回答