7. CALCULS ET REGROUPEMENTS
Les requêtes permettent d'effectuer des calculs à partir de
tous les enregistrements ou de regroupements spécifiques de ces mêmes
enregistrements.
a) CALCULS
Les requêtes permettent de créer des "champs
calculés" (qui n'ont
d'existence qu'au sein de la requête) pour effectuer des calculs.
Pour ces calculs peuvent être utilisés les opérateurs arithmétiques classiques
+ (addition),
- (soustraction),
* (multiplication),
/ (division réelle), \ (division entière), …
et les fonctions intégrées d'Access Année(),
Mois(), Jour(), Maintenant(),
…
À partir de la table "Commandes", il est possible de calculer les délais de livraison en soustrayant la date d'expédition à la date de commande
Dans la base en cours "Northwind 2016"
Réaliser la requête ci-dessus à partir de la table "commandes"
L'enregistrer sous le nom "Commandes Délais de livraison
…
Une valeur peut être complétée d'une unité (ou de n'importe quel texte) en utilisant l'opérateur de concaténation de chaînes de caractères : "&"
Dans la
requête en cours "Commandes Délais
de livraison" de la base en cours "Northwind 2016"
Réaliser la requête ci-dessus (idem que précédemment mais avec l'unité
"jour")
L'enregistrer puis la fermer
…
Le résultat est aligné à gauche car ce n'est plus une valeur numérique mais le résultat d'une concaténation, donc une chaine de caractères
b) OPÉRATIONS
Cette fonctionnalité permet de faire des calculs sur un champ. Selon la nature du champ, ce peut être une somme, une moyenne ou le nombre des enregistrements.
onglet "créer" (le dernier)
groupe "afficher/masquer" (dernier
bloc)
<clic g> sur (idem
pour l'enlever - le menu contextuel propose le même outil)
une
ligne s'affiche en dessous de la ligne "table"
<clic g> sur cette ligne dans la colonne du champ souhaité
<clic g> sur de
choisir l'opération (fonction) parmi celles proposées
les opérations dépendent du type de champ
Pour effectuer un calcul sur la totalité des enregistrements, ne pas laisser de regroupement et préciser l'opération pour chaque champ concerné.
Créer une nouvelle requête à partir de la
table "commandes" dans
la base en cours "Northwind 2016"
Insérer les champs "Réf commande",
"Date de commande",
"Date de commande" une
2ème fois et "frais
d'expédition"
L'enregistrer sous le nom "Commandes Frais expédition regroupements"
Faire le calcul du nombre de commandes, de la date de la première et de la
dernière commande et de la moyenne des frais d'expédition
Enregistrer et fermer la requête
Pour faire plusieurs calculs sur un même
champ, il faut le répéter pour chaque calcul
Bien nommer les champs en fonction de leur résultat soit par leur étiquette
suivi de double-point, soit en utilisant la propriété "légende" du champ dans la requête
c) REGROUPEMENTS
Pour effectuer une opération sur un groupe d'enregistrements, il faut laisser "regroupement" dans le(s) champ(s) identifiant le groupe d'enregistrements.
bouton gauche clavier
sur
la ligne "opérations"
indiquer regroupement dans la colonne du ou des champs servant de base aux
calculs (pour lequel un calcul sera effectué à chaque changement de
valeur)
indiquer le type d'opération pour les autres champs (compte,
somme…)
afficher en mode "feuille de données"
Pour calculer le total des frais d'expédition par client et par ville, il faut laisser "regroupement" dans les champs "Ville d'expédition", "Réf client" et "Nom d'expédition" et préciser la fonction "Somme" en tant qu'opération dans le champ "Frais d'expédition"
Dans la base en cours "Northwind 2016",
Créer une nouvelle requête et réaliser l'exemple ci-dessus
L'Enregistrer sous le nom "Commandes Frais expédition"
…
Des en-têtes reprenant les types d'opérations apparaissent par défaut dans la feuille de données. Il est préférable de les renommer ou de mettre une légende au niveau des propriétés du champ
Des critères peuvent être appliqués au regroupement.
bouton gauche clavier
sur
la ligne "critères", rajouter les critères voulus de la
manière classique
afficher en mode "feuille de données"
Dans la requête en cours "Commandes Frais expédition" de la base "Northwind 2016"
Calculer le total des frais d'expédition par client pour Chicago et Saumur
lorsque ce total est différent de "0", enregistrer la requête sous le
nom "Commandes Frais expédition
chicagosaumur" puis la fermer
Il est également possible de réaliser des calculs sur des groupes construits à partir d'expressions, et éventuellement d'y associer des critères de sélection.
La fonction "Mois" détermine le mois d'une date (la fonction "Année" détermine l'année) et s'exprime sous la forme :
Dans la base en cours "Northwind 2016",
Créer une nouvelle requête à partir de la table "Commandes"
Ajouter 2 fois le champ "Date
d'expédition" puis calculer pour chaque mois de chaque année le
total des frais d'expédition lorsque ce total est différent de 0 en utilisant
les fonctions "Année()"
et "Mois()"
L'enregistrer sous le nom " Commandes
Frais expédition par an" puis la fermer
Bien évaluer la pertinence des résultats : les requêtes sous Access fournissent quasiment toujours un résultat mais, si la requête est mal formulée, ce résultat peut être incohérent (notamment la fonction "compte" qui compte simplement le nombre d'enregistrements du groupe)
d) CRITÈRES MULTITABLES
Pour obtenir les informations désirées, il est souvent nécessaire d'utiliser plusieurs tables. Les principes restent les mêmes et les liaisons d'origine entre les tables sont automatiquement reprises dans la requête.
Pour obtenir la liste des commandes clients pour la période du 10 Avril 2015 au 25 Avril 2015, il faut afficher les tables "Clients "et "Commandes"
la relation entre les 2 s'affiche sous forme d'un lien :
Dans la base en cours "Northwind 2016",
Créer une nouvelle requête à partir des
tables "Clients" et
"Commandes" comme
ci-dessus
L'enregistrer sous le nom "Clients Commandes" et la fermer
Bien vérifier que les liens entre les tables sont présents pour que le résultat généré soit cohérent.
e) DÉMONSTRATION - DIDACTICIEL - ENTRAÎNEMENTS
<clic g> sur "démonstration" et la suivre
la fermer
<clic g> sur "didacticiel" et reproduire la démonstration en suivant les bulles d'aide
la fermer
<clic g> sur "entrainement" et suivre les consignes de "description" ci-dessous