Свойство CustomControl.OldValue (Доступ)

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

Синтаксис

выражения. OldValue

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

Примечания

Свойство 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 и обратная связь.