1

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

誰かがこれを行う方法を提案できますか? よろしくお願いします。

4

3 に答える 3

1

オプション グループ(「フレーム」と呼ばれることもあります)の.OldValueプロパティは機能します。[optValues] という名前のテーブルがあります。

[ID] - オートナンバー
[optValue] - 数値 (長整数)

次の 1 つのレコードが含まれます。

ID  optValue
1   3

私のフォームRecord Sourceは [optValues] テーブルです。Control Sourceフォームには、[optValue] フィールドである「Frame0」という名前のオプション グループがあります。3 つのオプション ボタンが含まれています。

ラベル: "foo"、値: 1
ラベル: "バー"、値: 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

理由はわかりませんが、.oldvalue が機能しません。

私と同じボートに乗っている場合は、optionGroup の BeforeUpdate イベントを使用して、静的変数を設定できます。その後、afterUpdate イベントで静的変数を読み取り、次の変更のためにリセットします。

于 2013-03-28T09:07:43.237 に答える
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 に答える