Поделиться через


Свойство Control.OldValue (Access)

Используйте свойство OldValue , чтобы определить неотредованное значение привязанного элемента управления. Только для чтения, Variant.

Синтаксис

expression. Oldvalue

Выражение Переменная, представляющая объект Control .

Замечания

Свойство OldValue содержит неотредованные данные из привязанного элемента управления и доступно только для чтения во всех представлениях.

Microsoft Access использует свойство 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 и обратная связь.