Control.OldValue プロパティ (Access)
バインドされたコントロールの編集されていない値を決定するには、 OldValue プロパティを使用します。 読み取り専用のバリアント型 (Variant) の値。
構文
式。Oldvalue
式Control オブジェクトを表す変数。
注釈
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 のサポートおよびフィードバックを参照してください。