Share via


ObjectFrame.OldValue プロパティ (Access)

バインドされたコントロールの編集されていない値を決定するには、 OldValue プロパティを使用します。 読み取り専用のバリアント型 (Variant) の値。

構文

Oldvalue

ObjectFrame オブジェクトを表す変数。

注釈

OldValue プロパティは、連結コントロールの編集前の値です。すべてのビューで値の取得のみ可能です。

OldValue プロパティは、連結コントロールの編集前の値を格納するために使用されます。 フォームの連結コントロールを編集しても、変更内容は、他のレコードに移動するまで保存されません。 OldValue プロパティには編集前のデータが格納されます。

OldValue プロパティの値をコントロールに代入すると、取り消し機能を独自に作成できます。 次の例は、フォームのテキスト ボックス コントロールに対する変更を元に戻す方法を示しています。

Private Sub btnUndo_Click() 
 
 Dim ctlTextbox As Control 
 
 For Each ctlTextbox in Me.Controls 
 If ctlTextbox.ControlType = acTextBox Then 
 ctlTextbox.Value = ctl.OldValue 
 End If 
 Next ctlTextbox 
 
End Sub

コントロールの内容が変更されていない場合、このような機能を使用しても何も変化しません。 レコードを保存すると、レコード ソースは更新され、コントロールの現在の値と OldValue プロパティの値は等しくなります。

OldValue プロパティの値は、コントロールに連結しているフィールドと同じデータ型になります。

次の使用例では、フィールドに新しく入力されたデータから、値増し率が 10% 以内かどうかを調べます。 10% を超える場合は、 OldValue プロパティを使用して、元の値に戻します。 このプロシージャは、検証するデータを含むコントロールの BeforeUpdate イベントから呼び出されます。

Public Sub Validate_Field() 
 
 Dim curNewValue As Currency 
 Dim curOriginalValue As Currency 
 Dim curChange As Currency 
 Dim strMsg As String 
 
 curNewValue = Forms!Products!UnitPrice 
 curOriginalValue = Forms!Products!UnitPrice.OldValue 
 curChange = Abs(curNewValue - curOriginalValue) 
 
 If curChange > (curOriginalValue * .1) Then 
 strMsg = "Change is more than 10% of original unit price." _ 
 & "Restoring original unit price." 
 MsgBox strMsg, vbExclamation, "Invalid change." 
 Forms!Products!UnitPrice = curOriginalValue 
 End If 
 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。