Calculer la valeur des contrôles dans les formulaires et les états
Lorsque vous utilisez une expression comme source de données d’un contrôle, vous créez un contrôle calculé. Par exemple, supposons que vous disposez d’un état qui comporte plusieurs enregistrements d’inventaire et que vous souhaitez créer un total dans le pied d’état correspondant à la somme de toutes les lignes de l’état.
Pour calculer le total, placez un contrôle de zone de texte dans le pied d’état, puis attribuez à la propriété SourceContrôle de la zone de texte l’expression suivante :
=Sum([table_field])
Dans ce cas, table_field correspond au nom du champ qui contient vos valeurs de sous-total. Ce champ peut provenir d’une table ou d’une requête. La fonction Somme calcule le total de toutes les valeurs de table_field.
PROCÉDURE
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire à modifier, puis cliquez sur Mode Page ou Mode Création dans le menu contextuel.
- Sélectionnez le contrôle dans lequel vous souhaitez entrer une expression.
- Si la feuille de propriétés n’est pas affichée, appuyez sur F4 pour l’afficher.
- Pour créer manuellement une expression, sous l’onglet Données de la feuille de propriétés, cliquez sur la propriété SourceContrôle de la zone de texte, puis entrez = suivi du reste de votre expression. Par exemple, pour calculer le sous-total mentionné ci-dessus, entrez =Sum([table_field]) en veillant à remplacer table_field par le nom de votre champ.
- Pour créer une expression à l’aide du Générateur d’expressions, cliquez sur le bouton Créer dans la zone de propriété.
Une fois l’expression remplie, la feuille de propriétés ressemble à ceci :
Utiliser des expressions comme critères de requête
Vous pouvez appliquer des critères à une requête pour affiner les résultats de celle-ci. Vous entrez les critères sous forme d’expression et Access renvoie uniquement les lignes correspondant à l’expression.
Par exemple, supposons que vous vouliez afficher toutes les commandes expédiées au cours des trois premiers mois de l’année 2017. Pour entrer les critères, vous devez saisir l’expression suivante dans la cellule Critères de la colonne Date/Heure de votre requête. Cet exemple utilise une colonne Date/Heure intitulée DateExpédition. Pour définir une plage de dates, entrez vos critères de la façon suivante :
Between #1/1/2017# And #3/31/2017#
La colonne DateExpédition ressemble à l’illustration suivante.
Pour chaque enregistrement du tableau commandes, si la valeur dans la colonneDateExpéditionest comprise dans la plage de dates que vous spécifiez, l’enregistrement est inclus dans le résultat de la requête. Veuillez noter que dans l’expression, vous encadrez les dates entre des signes dièse (#). Access traite une valeur placée entre des signes dièse en tant que type de données Date/heure. Traiter ces valeurs en tant que données date/heure permet d’effectuer des calculs sur ces valeurs, par exemple, la soustraction d’une date d’une autre.
PROCÉDURE
- Dans le volet de navigation, cliquez avec le bouton droit sur la requête que vous souhaitez modifier, puis cliquez sur Mode Création dans le menu contextuel.
- Cliquez dans la cellule Critères de la colonne pour laquelle vous souhaitez entrer des critères.
- Pour créer manuellement votre expression, entrez votre expression de critères. Ne faites pas précéder l’expression de critères de l’opérateur =.
- Pour créer votre expression à l’aide du Générateur d’expressions, dans le ruban, cliquez sur Création, puis dans le groupe Paramètres de requête, cliquez sur Générateur .
Si vous souhaitez disposer d’une zone d’édition d’expression plus grande, placez le curseur dans la cellule Critères, puis appuyez sur Maj+F2 pour afficher la zone Zoom :
Conseil Pour rendre le texte plus lisible, sélectionnez Police.
Créer un champ calculé dans une requête
Imaginons que vous créiez une requête et que vous vouliez afficher les résultats d’un calcul qui fait appel à d’autres champs de la requête. Pour créer le champ calculé, vous devez entrer une expression dans une cellule vide de la ligne Champ de votre requête. Par exemple, si votre requête contient un champ Quantité et un champ Prix unitaire, vous pouvez multiplier les deux pour créer un champ calculé pour Prix total en entrant l’expression suivante dans la ligne Champ de la requête :
Extended Price: [Quantity] * [Unit Price]
En faisant précéder l’expression du texte Extended Price:, la nouvelle colonne est nommée Prix total. Ce nom est souvent appelé un « alias ». Si vous ne fournissez pas d’alias, Access en crée un, par exemple, Expr1..
Lorsque vous exécutez la requête, Access effectue le calcul sur chaque ligne, comme le montre l’illustration suivante :
PROCÉDURE
- Dans le volet de navigation, cliquez avec le bouton droit sur la requête à modifier, puis cliquez sur Mode Création dans le menu contextuel.
- Cliquez dans la cellule Champ de la colonne où vous souhaitez créer le champ calculé.
- Pour créer manuellement votre expression, tapez votre expression.
Ne faites pas précéder l’expression de critères de l’opérateur = ; faites-la plutôt commencer par un libellé descriptif suivi de deux-points. Par exemple, entrez Extended Price: pour spécifier le libellé d’une expression qui crée un champ calculé appelé Prix global. Entrez ensuite les critères de l’expression après les deux-points.
- Pour créer votre expression à l’aide du Générateur d’expressions, dans le ruban, cliquez sur Création, puis dans le groupe Paramètres de requête, cliquez sur Générateur.
Créer un champ calculé dans une table
Access permet de créer un champ calculé dans une table. De ce fait, il n’est pas nécessaire d’utiliser une requête distincte pour effectuer des calculs. Par exemple, si votre table indique la quantité, le prix et la TVA pour chaque article dans une commande, vous pouvez ajouter un champ calculé qui affiche le prix total, comme suit :
[Quantity]*([UnitPrice]+([UnitPrice]*[TaxRate]))
Le calcul ne peut pas inclure de champs provenant d’autres tables ou requêtes, et les résultats du calcul sont en lecture seule.
PROCÉDURE
- Ouvrez la table en double-cliquant dessus dans le volet de navigation.
- Faites défiler horizontalement vers la colonne la plus à droite de la table, puis cliquez sur l’en-tête de colonne Cliquez pour ajouter.
- Dans la liste qui s’affiche, cliquez sur Champ calculé, puis cliquez sur le type de données souhaité pour le résultat. Access affiche le Générateur d’expressions.
- Entrez le calcul souhaité pour ce champ, par exemple :
[Quantity] * [Unit Price]
Dans un champ calculé, vous ne commencez pas l’expression par un signe égal (=).
- Cliquez sur OK.
Access ajoute le champ calculé, puis met en surbrillance l’en-tête de champ afin de vous permettre de taper un nom de champ.
- Tapez un nom pour le champ calculé, puis appuyez sur Entrée.
Définir les valeurs par défaut d’un champ de table
Vous pouvez utiliser une expression pour spécifier la valeur par défaut d’un champ de table, une valeur qu’Access utilise pour les nouveaux enregistrements sauf si une autre valeur est fournie. Par exemple, supposons que vous vouliez insérer automatiquement la date et l’heure dans un champ intitulé DateCommande chaque fois que quelqu’un ajoute un nouvel enregistrement. Pour ce faire, vous pouvez recourir à l’expression suivante :
Now()
PROCÉDURE
- Dans le volet de navigation, double-cliquez sur la table à modifier.
Access ouvre la table en mode Feuille de données.
- Sélectionnez le champ à modifier.
- Dans le ruban, cliquez sur Champs, puis dans le groupe Propriétés, cliquez sur Valeur par défaut. Access affiche le Générateur d’expressions.
- Entrez votre expression dans la zone, en veillant à insérer le signe égal (=) en début d’expression.
Remarque Si vous liez un contrôle à un champ de table et que tous deux possèdent une valeur par défaut, celle du contrôle est prioritaire sur celle du champ de table.
Définir les valeurs par défaut des contrôles
Il est également courant d’utiliser une expression dans la propriété Valeur par défaut d’un contrôle. La propriété Valeur par défaut d’un contrôle est similaire à la propriété Valeur par défaut d’un champ de table. Par exemple, pour utiliser la date du jour comme valeur par défaut d’une zone de texte, vous pouvez utiliser l’expression suivante :
Date()
La fonction Date utilisée dans cette expression renvoie la date du jour, mais pas l’heure. Si vous liez la zone de texte à un champ de table et que ce dernier a une valeur par défaut, la valeur par défaut du contrôle est prioritaire par rapport à celle du champ de table. Il est souvent plus cohérent de définir la propriété Valeur par défaut pour le champ de la table. De cette façon, si vous basez plusieurs contrôles de différents formulaires sur le même champ de table, la même valeur par défaut s’applique à chaque contrôle, ce qui garantit une entrée de données cohérente dans chaque formulaire.
PROCÉDURE
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire ou l’état à modifier, puis cliquez sur Mode Page ou Mode Création dans le menu contextuel.
- Sélectionnez le contrôle à modifier.
- Si la feuille de propriétés n’est pas déjà affichée, appuyez sur F4 pour l’afficher.
- Cliquez sur l’onglet Toutes de la feuille de propriétés, puis cliquez dans la zone de la propriété Valeur par défaut.
- Entrez l’expression, ou cliquez sur le bouton Créer de la zone de propriété pour créer une expression à l’aide du Générateur d’expressions.
Ajouter une règle de validation à un enregistrement ou un champ de table
Les expressions sont très utiles pour valider des données à mesure qu’elles sont entrées dans la base de données, ce qui permet d’éviter les données incorrectes. Dans les tables, il y a deux types de règles de validation: les règles de validation de champ (qui empêchent les utilisateurs d’entrer des données incorrectes dans un champ) et les règles de validation d’enregistrement (qui empêchent les utilisateurs de créer des enregistrements qui ne correspondent pas à la règle de validation). Vous utilisez des expressions pour les deux types de règles de validation.
Par exemple, supposons que vous ayez créé une table nommée Stock avec un champ nommé Unités disponibles ; vous souhaitez définir une règle contraignant les utilisateurs à entrer une valeur supérieure ou égale à zéro. En d’autres termes, le stock ne peut jamais être une valeur négative. Pour ce faire, vous devez utiliser l’expression suivante comme règle de validation de champ dans le champ Unités disponibles :
>=0
PROCÉDURE : Entrer une règle de validation de champ ou d’enregistrement
- Dans le volet de navigation, double-cliquez sur la table à modifier. Access ouvre la table en mode Feuille de données.
- Pour une règle de validation de champ, sélectionnez le champ à modifier.
- Dans le ruban, cliquez sur Champs et, dans le groupe Validation de champ, cliquez sur Validation, puis sur Règle de validation de champ ou sur Règle de validation d’enregistrement. Access affiche le Générateur d’expressions.
- Commencez à taper les critères souhaités. Par exemple, pour une règle de validation de champ qui nécessite que toutes les valeurs soient supérieures ou égales à zéro, tapez ce qui suit :
>=0
Ne faites pas précéder l’expression d’un signe égal (=).
Les expressions de règle de validation sont de type booléen, ce qui signifie qu’elles ont pour résultat True ou False pour toute valeur entrée donnée. Une règle de validation doit correspondre à True pour la valeur, sinon Access n’enregistre pas l’entrée et affiche un message de validation indiquant l’erreur. Dans cet exemple, si vous entrez une valeur inférieure à zéro pour le champ Unités disponibles, la règle de validation correspond à False et Access n’accepte pas la valeur. Si vous n’avez pas entré de message de validation comme décrit à la section suivante, Access affiche son propre message pour indiquer que la valeur que vous avez entrée est interdite par la règle de validation applicable au champ.
Procédure : Entrer un message de validation
Pour simplifier l’utilisation de votre base de données, vous pouvez entrer des messages de validation personnalisés. Ceux-ci remplacent les messages génériques affichés par Access lorsque les données ne sont pas conformes à une règle de validation. Les messages de validation personnalisés permettent de fournir des informations spécifiques qui aident l’utilisateur à entrer les données correctes, par exemple « La valeur Unités disponibles ne peut pas être un nombre négatif ».
- Dans le volet de navigation, double-cliquez sur la table à modifier.
Access ouvre la table en mode Feuille de données.
- S’il s’agit d’un message de validation de champ, sélectionnez le champ auquel vous avez ajouté la règle de validation.
- Dans le ruban, cliquez sur Champs, puis dans le groupe Validation de champ, cliquez sur Validation, puis sur Message de validation de champ ou Message de validation d’enregistrement.
- Dans la boîte de dialogue Entrez le message de validation, tapez le message à afficher lorsque les données ne satisfont pas à la règle de validation, puis cliquez sur OK.
Ajouter une règle de validation à un contrôle
Outre les enregistrements et champs de table, les contrôles possèdent également une propriété Valide si qui peut accepter une expression. Par exemple, supposons que vous utilisiez un formulaire pour entrer la plage de dates d’un état et que vous vouliez faire en sorte que la date de début ne soit pas antérieure au 01/01/2017. Vous pouvez définir les propriétés Valide si et MessageSiErreur de la zone de texte dans laquelle vous entrez la date de début de la façon suivante :
Propriété | Paramètre |
---|---|
Valide si | >=#01/01/2017# |
Message si erreur | Vous ne pouvez pas entrer une date antérieure au 01/01/2017. |
Si vous essayez d’entrer une date antérieure au 01/01/2017, un message apparaît et affiche le texte de la propriété MessageSiErreur. Si aucun texte n’a été entré dans la zone de propriété MessageSiErreur, un message générique s’affiche. Dès que vous cliquez sur OK, Access vous renvoie à la zone de texte.
Lorsque vous définissez une règle de validation pour un champ de table, la règle est appliquée dans toute la base de données, quel que soit l’endroit où ce champ est modifié. En revanche, une règle de validation définie pour un contrôle de formulaire ne s’applique que lorsque ce formulaire est utilisé. Il peut être utile de définir des règles de validation distinctes pour des champs de table et pour les contrôles de formulaire si vous souhaitez établir des règles de validation différentes pour différents utilisateurs.
PROCÉDURE
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire ou l’état à modifier, puis cliquez sur Mode Page ou Mode Création dans le menu contextuel.
- Cliquez avec le bouton droit sur le contrôle que vous souhaitez modifier, puis cliquez sur Propriétés dans le menu contextuel. Access affiche la page de propriétés du contrôle.
- Cliquez sur l’onglet Toutes, puis sur la zone de propriété Valide si.
- Entrez l’expression, ou cliquez sur le bouton Créer de la zone de propriété pour créer une expression à l’aide du Générateur d’expressions.
Ne faites pas précéder l’expression de l’opérateur =.
- Pour personnaliser le texte qui s’affiche lorsqu’un utilisateur entre des données qui ne correspondent pas à la règle de validation, tapez le texte souhaité dans la propriété Message si erreur.
Grouper et trier les données dans des états
C’est dans le volet Regrouper, trier et total que vous définissez les niveaux de regroupement et les ordres de tri des données d’un état. En règle générale, le regroupement ou le tri porte sur un champ que vous sélectionnez dans une liste. Toutefois, si vous voulez l’axer sur une valeur calculée, vous pouvez entrer une expression à la place.
Le regroupement consiste à combiner des colonnes qui contiennent des valeurs en double. Par exemple, imaginons que votre base de données contienne des informations de ventes pour les bureaux de différentes villes et que l’un des états de votre base de données soit intitulé « Ventes par ville ». La requête qui fournit les données à cet état regroupe les données en fonction des valeurs des villes. Ce type de regroupement peut faciliter la lecture et la compréhension de vos informations.
Par contre, le tri consiste à imposer un ordre de tri aux lignes (enregistrements) au niveau des résultats de requête. Par exemple, vous pouvez trier des enregistrements en fonction de leurs valeurs de clé primaire (ou d’un autre jeu de valeurs d’un autre champ) par ordre croissant ou décroissant, comme vous pouvez les trier en fonction d’un ou plusieurs caractères selon un ordre spécifié, tel que l’ordre alphabétique.
Procédure : Ajouter un regroupement et un tri à un état
- Dans le volet de navigation, cliquez avec le bouton droit sur l’état à modifier, puis cliquez sur Mode Page ou Mode Création dans le menu contextuel.
- Dans le ruban, cliquez sur Création, puis dans le groupe Regroupement et totaux, cliquez sur Regrouper et trier Le volet Regrouper, trier et total s’affiche sous l’état.
- Pour ajouter un niveau de regroupement à l’état, cliquez sur Ajouter un groupe.
- Pour ajouter un ordre de tri à l’état, cliquez sur Ajouter un tri.
Un nouveau niveau de groupe ou un nouvel ordre de tri apparaît dans le volet, auquel s’ajoute la liste des champs qui fournissent les données à l’état. Cette figure montre l’ajout d’un nouveau niveau de groupe (regroupement sur la catégorie) et d’un nouvel ordre de tri (tri sur le fabricant) standard, plus la liste qui contient les champs disponibles pour le regroupement et le tri :
- Sous la liste des champs disponibles, cliquez sur expression pour lancer le Générateur d’expressions.
- Entrez l’expression à utiliser dans la zone prévue à cet effet (zone du haut) du Générateur d’expressions. Veillez à ce que l’expression commence par l’opérateur égal (=).
Procédure : Ajouter une expression à un groupe ou tri existant
- Dans le volet de navigation, cliquez avec le bouton droit sur l’état à modifier, puis cliquez sur Mode Page ou Mode Création dans le menu contextuel.
- Cliquez sur le niveau de groupe ou l’ordre de tri que vous souhaitez modifier.
- Cliquez sur la flèche Bas en regard de Regrouper sur (pour les niveaux de regroupement) ou de Trier par (pour les ordres de tri). Une liste contenant les champs disponibles s’affiche.
- Au bas de la liste où figurent les champs, cliquez sur expression pour lancer le Générateur d’expressions.
- Tapez votre expression dans la zone prévue à cet effet (zone du haut) dans le Générateur d’expression. Veillez à ce que l’expression commence par l’opérateur égal (=).
Contrôler les actions de macros qui s’exécutent
Dans certains cas, vous pouvez souhaiter exécuter une action, voire une série d’actions de macro seulement si une condition déterminée est vérifiée. Par exemple, supposons que vous vouliez mettre en œuvre une action de macro uniquement lorsque la valeur d’une zone de texte est supérieure ou égale à 10. Pour définir cette règle, vous devez utiliser une expression dans un bloc Si de la macro pour définir la condition de cette dernière.
Pour cet exemple, supposons que la zone de texte s’intitule « Articles ». L’expression qui définit la condition est :
[Items]>=10
PROCÉDURE
- Dans le volet de navigation, cliquez avec le bouton droit sur la macro à modifier, puis cliquez sur Mode Création dans le menu contextuel.
- Cliquez sur le bloc Si à modifier ou ajoutez un bloc Si à partir du volet Catalogue d’actions.
- Cliquez sur la ligne supérieure du bloc Si.
- Entrez votre expression conditionnelle dans la zone, ou cliquez sur le bouton Créer en regard de la zone d’expression pour lancer le Générateur d’expressions.
L’expression que vous entrez doit être de type booléen, ce qui signifie qu’elle correspond à True ou False. Les actions de macro contenues dans le bloc Si s’exécutent uniquement lorsque la condition est True.