Partage via


Propriété Control.OldValue (Access)

Utilisez la propriété OldValue pour déterminer la valeur non modifiée d’un contrôle lié. Variant en lecture seule.

Syntaxe

expression. Oldvalue

Expression Variable qui représente un objet Control .

Remarques

La propriété OldValue contient la valeur non modifiée d'un contrôle dépendant et est en lecture seule dans tous les modes.

Microsoft Access utilise la propriété OldValue pour stocker la valeur d'origine d'un contrôle dépendant. Lorsque vous modifiez un contrôle dépendant dans un formulaire, les modifications ne sont pas enregistrées jusqu'à ce que vous passez à un autre enregistrement. La propriété OldValue contient la version non modifiée des données sous-jacentes.

Vous pouvez fournir votre propre fonction d'annulation en attribuant la valeur de la propriété OldValue à un contrôle. L’exemple suivant montre comment annuler les modifications apportées aux contrôles de zone de texte d’un formulaire.

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

Si le contrôle n'a pas été modifié, ce code n'a aucun effet. Lorsque vous passez à un autre enregistrement, la source d'enregistrement est mis à jour, afin que la valeur actuelle et la propriété OldValue sera la même.

Le paramètre de la propriété OldValue a les mêmes données de type que le champ auquel le contrôle est lié.

Exemple

L'exemple suivant montre comment pour déterminer si les nouvelles données entrées dans un champ sont de 10 pour cent de la valeur des données d'origine. Si la modification est supérieure à 10 pour cent, la propriété OldValue est utilisée pour restaurer la valeur d'origine. Cette procédure peut être appelée à partir de l’événement BeforeUpdate du contrôle qui contient les données que vous souhaitez valider.

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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.