次の方法で共有


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 のサポートおよびフィードバックを参照してください。