user2217642
user2217642

Reputation: 25

OldValue and Value same on radio button change Access 2007 VB

I have an access 2007 front-end app. On a particular form, there are 2 radio buttons in a radio button group. I am trying to detect when the radio button group is changed and capture the old and new values, but my OldValue and Value properties are = in the save event, even if I have changed it. The OldValue is equal to the New radio button value, not what it was originally.

I tried coding this in the form's Save subroutine. The intent was to compares the RB value with the original dataset value to force setting the old value, but it doesn't like the 'SET' statements

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

Could someone suggest a way to do this? Please and thank you.

Upvotes: 1

Views: 1627

Answers (3)

Tera
Tera

Reputation: 113

I don't know why but .oldvalue doesn't work for me.

If you are in the same boat as me, you can use the BeforeUpdate event of the optionGroup and set a static variable. Then read the static variable in afterUpdate event and reset it for the next change.

Upvotes: 0

Gord Thompson
Gord Thompson

Reputation: 123819

The .OldValue property of the Option Group (sometimes referred to as "Frame") does work. I have a table named [optValues]:

[ID] - AutoNumber
[optValue] - Numeric (Long Integer)

It contains one record:

ID  optValue
1   3

My form's Record Source is the [optValues] table. The form has an Option Group named "Frame0" whose Control Source is the [optValue] field. It contains three Option buttons

label: "foo", value: 1
label: "bar", value: 2
label: "baz", value: 3

The After Update event handler for Frame0 is:

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

When I open the form, "baz" is selected (because [optValue] is 3 in the table):

Frame0 initial condition

When I click on "foo" I immediately see the (correct) old and new values:

AfterUpdate() MsgBox

Upvotes: 1

ron tornambe
ron tornambe

Reputation: 10780

The only way I can think of to detect and capture changes to Option-Group values is to handle the Form_Current event (save the Option Group value), then also handle the Option-Group After event. Although you can change the Option-Group.Value, OldValue is likely a protected (read-only) property. Hope something like the following helps:

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

Upvotes: 0

Related Questions