Propriété OptionButton.ValidationRule (Access)

Utilisez la propriété ValidationRule pour spécifier les exigences pour les données entrées dans un enregistrement, un champ ou un contrôle. Lorsque les données entrées qui enfreint le paramètre ValidationRule, vous pouvez utiliser la propriété ValidationText (MessageSiErreur) pour spécifier le message à afficher à l'utilisateur. String en lecture/écriture.

Syntaxe

expression. Validationrule

Expression Variable qui représente un objet OptionButton .

Remarques

Entrez une expression pour le paramètre de la propriété ValidationRule et du texte pour le paramétrage de la propriété ValidationText (MessageSiErreur). La longueur maximale pour le paramètre de la propriété ValidationRule est 2 048 caractères. Le paramètre de la propriété ValidationText (MessageSiErreur) la longueur maximale est de 255 caractères.

Pour les contrôles, vous pouvez définir la propriété ValidationRule n'importe quelle expression valide. Pour les règles de validation de champ et d’enregistrement, l’expression ne peut pas contenir de fonctions définies par l’utilisateur, de fonctions d’agrégation de domaine ou d’agrégation, de la fonction Eval , de la méthode CurrentUser ou de références à des formulaires, des requêtes ou des tables. Les règles de validation des champs ne peuvent pas non plus contenir de références à d'autres champs. Pour les enregistrements, les expressions peuvent inclure des références à des champs dans ce tableau.

Champs de table et d'enregistrements, vous pouvez également définir ces propriétés dans Visual Basic à l'aide de la propriété DAO ValidationRule.

Remarque

Les propriétés ValidationRule et ValidationText ne s’appliquent pas aux contrôles de case à cocher, de bouton d’option ou de bouton bascule lorsqu’ils se trouvent dans un groupe d’options. Elles ne s'appliquent qu'au groupe d'options lui-même.

Microsoft Access valide automatiquement les valeurs en fonction du type de données d’un champ ; Par exemple, Access n’autorise pas le texte dans un champ numérique. Vous pouvez définir des règles qui ne sont plus spécifiques à l'aide de la propriété ValidationRule.

Si vous définissez la propriété ValidationRule , mais pas la propriété ValidationText , Access affiche un message d’erreur standard en cas de violation de la règle de validation. Si vous définissez la propriété ValidationText , le texte que vous entrez s’affiche en tant que message d’erreur.

Par exemple, lorsqu’un enregistrement est ajouté pour un nouvel employé, vous pouvez entrer une propriété ValidationRule exigeant que la valeur dans le champ StartDate de l’employé se situe entre la date de création de l’entreprise et la date actuelle. Si ce n'est pas le cas, vous pouvez afficher le message de la propriété ValidationText (MessageSiErreur) : « Date d'embauche incorrecte ».

Si vous créez un contrôle en faisant glisser un champ de la liste de champs, la règle de validation du champ reste en vigueur, bien qu’elle ne s’affiche pas dans la zone de propriété ValidationRule du contrôle sur la feuille de propriétés. En effet, une règle de validation d'un champ est héritée par un contrôle lié à ce champ.

Les règles de validation des contrôles, des champs et des enregistrements sont appliquées comme suit :

  • Les règles de validation que vous définissez pour les champs et les contrôles sont appliquées lorsque vous modifiez les données et que le focus quitte le champ ou le contrôle.

  • Les règles de validation définies pour les enregistrements sont appliquées lorsque vous déplacez l'enregistrement vers un autre enregistrement.

  • Si vous créez des règles de validation qui s'appliquent à la fois à un champ et à un contrôle lié au champ, les deux règles de validation sont appliquées lorsque vous modifiez les données et que le focus quitte le contrôle.

Le tableau suivant contient des exemples d’expressions pour les propriétés ValidationRule (ValideSi) et ValidationText (MessageSiErreur).

ValidationRule (ValideSi) ValidationText (MessageSiErreur)
<> 0 L'entrée doit avoir une valeur différente de zéro.
> 1000 Or Is Null L'entrée doit être vide ou supérieure à 1000.
Like "A????" L’entrée doit comporter 5 caractères et commencer par la lettre A.
>= #1/1/96# And <#1/1/97# L'entrée doit dater de 1996.
DLookup("CustomerID", "Customers", "CustomerID = Forms!Customers!CustomerID") Is Null L'entrée doit être un CodeClient unique (les fonctions d'agrégation de domaine sont uniquement autorisées pour la validation au niveau du formulaire).

Si vous créez une règle de validation pour un champ, Access n’autorise normalement pas le stockage d’une valeur Null dans le champ. Si vous souhaitez autoriser une valeur Null , ajoutez "Is Null" à la règle de validation, comme dans "<> 8 Or Is Null" et assurez-vous que la propriété Required est définie sur Non.

Vous ne pouvez pas définir de règles de validation de champ ou d’enregistrement pour les tables créées en dehors d’Access (par exemple, dBASE, Paradox ou SQL Server). Vous pouvez uniquement définir des règles de validation de contrôle pour ces tables.

Exemple

L'exemple suivant crée une règle de validation pour un champ qui ne permet que la saisie de valeurs supérieures à 65. Si un nombre inférieur à 65 est entré, un message est affiché. Les propriétés sont définies à l’aide de la fonction SetFieldValidation .

Dim strTblName As String, strFldName As String 
Dim strValidRule As String 
Dim strValidText As String, intX As Integer 
 
strTblName = "Customers" 
strFldName = "Age" 
strValidRule = ">= 65" 
strValidText = "Enter a number greater than or equal to 65." 
intX = SetFieldValidation(strTblName, strFldName, _ 
 strValidRule, strValidText) 
 
Function SetFieldValidation(strTblName As String, _ 
 strFldName As String, strValidRule As String, _ 
 strValidText As String) As Integer 
 
 Dim dbs As Database, tdf As TableDef, fld As Field 
 
 Set dbs = CurrentDb 
 Set tdf = dbs.TableDefs(strTblName) 
 Set fld = tdf.Fields(strFldName) 
 fld.ValidationRule = strValidRule 
 fld.ValidationText = strValidText 
End Function

L’exemple suivant utilise la fonction SetTableValidation pour définir la validation au niveau de l’enregistrement afin de garantir que la valeur dans le champ EndDate vient après la valeur du champ StartDate .

Dim strTblName As String, strValidRule As String 
Dim strValidText As String 
Dim intX As Integer 
 
strTblName = "Employees" 
strValidRule = "EndDate > StartDate" 
strValidText = "Enter an EndDate that is later than the StartDate." 
intX = SetTableValidation(strTblName, strValidRule, strValidText) 
 
Function SetTableValidation(strTblName As String, _ 
 strValidRule As String, strValidText As String) _ 
 As Integer 
 
 Dim dbs As Database, tdf As TableDef 
 
 Set dbs = CurrentDb 
 Set tdf = dbs.TableDefs(strTblName) 
 tdf.ValidationRule = strValidRule 
 tdf.ValidationText = strValidText 
End Function

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.