使用 OldValue 屬性可以確定綁定控件中未編輯的值。Variant 型,只讀。
expression.OldValue
expression 必需。返回“應用于”列表中的一個對象的表達式。
OldValue 屬性包含的是綁定控件中未編輯的數(shù)據(jù),它在所有視圖中都為只讀。
只有在使用宏或 Visual Basic 時才可以訪問該屬性。
通過使用以下語法,可以將 OldValue 屬性賦給一個變量。
OriginalValue = Forms!Customers!AmountPaid.OldValue
Microsoft Access 使用 OldValue 屬性來存儲綁定控件的原始值。在編輯窗體上的綁定控件時,必須在移到其他記錄之后,所作更改才能保存。OldValue 屬性包含的是基礎數(shù)據(jù)編輯前的原始值。
通過將 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 屬性設置與控件綁定到的字段有相同的數(shù)據(jù)類型。
下面的示例檢查字段中新輸入的數(shù)據(jù),確定新值是否在原始數(shù)據(jù)值的 10% 之內(nèi)。如果更改大于 10%,則使用 OldValue 屬性還原初始值。下列過程可以從包含要驗證數(shù)據(jù)的控件的 BeforeUpdate 事件中調(diào)用。
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