Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Exercice Access sur les requêtes paramétrées
Dans l'exercice précédent, nous avons appris à dompter les
requêtes sélection. A ce titre, nous avons pu constater leurs souplesse et puissance. Elles peuvent agir sur une ou plusieurs tables et permettent de combiner ou recouper autant de
critères que souhaité. Les extractions offertes sont ainsi affinées au plus juste pour manipuler les données conformément aux besoins.
Ici, nous abordons les
requêtes paramétrées. Leur principe de construction est semblable. Mais ces
requêtes sont
dynamiques. Les emplacements des critères sont prédéfinis. En d'autres termes, les contraintes sont posées sur des champs explicitement désignés. Mais les contraintes elles-mêmes ne sont pas complètement spécifiées. Ainsi, au moment de l'exécution, la requête demande à l'utilisateur de préciser la valeur pour produire l'extraction correspondante.
Ce type de
requête permet d'en regrouper d'innombrables dans une seule conception. Elles sont un excellent moyen de questionner la
base de données pour obtenir une réponse précise à une demande spécifique à l'instant T. On retrouvera facilement un client par son nom ou un article par sa référence par exemple.
Base de données source
Au travers des manipulations sur les
tables et de la découverte des
requêtes sélection, nous avons fait évoluer notre
base de données. Il s'agit de la récupérer pour poursuivre les travaux qui, au fil de l'apprentissage, conduiront à l'application finalisée de
facturation des clients.
- Télécharger la base clients-et-commandes-requetes-parametrees.accdb par clic sur ce lien,
- Double cliquer sur le fichier téléchargé pour l'ouvrir dans Access,
- Puis, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
- Dans le volet sur la gauche de l'écran, cliquer droit sur la requête R_clients_Femmes,
- Dans le menu contextuel, choisir Mode création,
Il s'agit de l'une des dernières
requêtes que nous avons bâtie lors du précédent exercice sur les
requêtes sélection. Des contraintes sont recoupées sur les
champs Client_civilite et
Client_dep. Elle permet d'extraire de la
table Clients, toutes les femmes habitant dans les départements 04, 05 et 06. Mais finalement, ces conditions sont statiques. Cette
requête ne permet pas de s'adapter pour répondre à un besoin précis voire urgent à l'instant T.
Requête paramétrée textuelle
Les
requêtes paramétrées permettent de bâtir des outils pertinents pour l'entreprise. Elles n'offrent pas les mêmes résultats à chaque extraction. Au moment de l'exécution,
Access demande à l'utilisateur de préciser la contrainte pourtant paramétrée sur un champ bien défini. Et c'est là que réside l'astuce. Plutôt que de définir une
condition stricte sur un champ, nous allons émettre un
critère qui ne sera pas reconnu par
Access. La requête ne sachant pas comment agir, demande précision à l'utilisateur. C'est en quelque sorte une gestion intelligente des erreurs provoquées intentionnellement.
- Cliquer sur la croix de l'onglet pour fermer la requête précédente,
- Cliquer alors sur l'onglet Créer en haut de la fenêtre Access pour activer son ruban,
- Dans la section Requêtes du ruban, cliquer sur le bouton Création de requête,
- Dans la boîte de dialogue qui apparaît, sélectionner la table Clients,
- Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
Nous accédons ainsi à l'
éditeur de requête Access, avec sa grille pour poser les contraintes et la représentation schématisée de la table.
- Dans la représentation de la table, double cliquer sur le symbole de l'étoile (*) placé au-dessus de l'énumération des champs,
Cette action a pour effet de remplir la zone champ pour la première colonne de la grille de requête (Clients.*). Comme nous l'avons expliqué dans l'exercice précédent, à l'instar du
langage Sql, le symbole de l'étoile représente tous les champs de la table. Nous choisissons donc d'afficher tous les enregistrements extraits avec le niveau de détail maximum. Un critère en revanche, se place sur un champ explicitement dissocié des autres. Et nous souhaitons que cette
requête dynamique isole les informations d'un client, dont le nom est à renseigner à la volée.
- Dans la représentation de la table, double cliquer sur le champ Client_nom,
Ce dernier s'ajoute à la suite dans la grille de requête.
Comme nous l'avons appris, nous pouvons très bien poser une contrainte sur un champ, sans afficher ce dernier dans les résultats. C'est l'effet de cette case lorsqu'elle est décochée. De plus, ce champ est déjà inclus dans la sélection réalisée par le symbole de l'étoile.
- Dans la zone Critères pour ce champ Client_nom, taper l'expression suivante : [Quel est le nom du client ?],
Les crochets sont le point le plus important dans l'élaboration d'une
requête paramétrée. Dans la
syntaxe Access, ils désignent un champ de table reconnu par son nom. A la place, nous y inscrivons une question explicite destinée à l'utilisateur. Comme
Access ne reconnaîtra pas ce champ, il l'affichera pour demander précision. La réponse fournie sera exploitée comme
critère d'extraction sur le
champ Client_nom. C'est bien sur le lui en effet que la contrainte est posée.
- Enregistrer la requête (CTRL + S) sous le nom R_Quel_Client,
A validation de la boîte de dialogue, la nouvelle requête s'implante dans la
catégorie Requêtes, dans le
volet des objets Access, sur la gauche de l'écran.
L'idée est la suivante : Un client appelle la société pour obtenir des informations sur une commande passée. L'opérateur lui demande son nom afin d'accéder à son dossier.
- Dans le ruban Accueil, cliquer sur le bouton Affichage pour exécuter la requête,
Comme vous le constatez, en guise de résultats, une petite boîte de dialogue apparaît. Son message est on ne peut plus explicite. Il s'agit de la question que nous avons paramétrée dans les crochets. Pour fournir la précision sur ce
champ non reconnu,
Access offre une zone de saisie en guise de réponse.
- Taper le nom de client suivant : Hochon, par exemple,
- Puis, cliquer sur le bouton Ok de la boîte de dialogue pour valider,
Ce nom est reconnu dans la
table Clients pour le
champ Client_nom. De fait, la
requête Access restitue toutes les informations de champs attachées. Ces requêtes sont donc définitivement précieuses. Leurs résultats ne sont pas connus à l'avance. Elles permettent d'accéder aux informations spécifiques à préciser, pour répondre rapidement à un besoin précis à l'instant T.
Si vous fermez la
requête pour l'exécuter de nouveau par double clic sur son nom dans le volet gauche, la même question est posée. Si vous tapez un autre nom, c'est un nouvel enregistrement lui correspondant qui est extrait. En outre, ces
requêtes dynamiques sont précieuses pour optimiser leur nombre. Elles répondent en effet à une grande quantité de besoins.
Croiser les conditions
Le fonctionnement d'une requête paramétrée est identique à celui des
requêtes sélection. Rien n'empêche donc de recouper les
conditions dynamiques pour offrir des extractions affinées. Dans l'exemple qui suit, nous souhaitons créer une
requête permettant d'extraire toutes les personnes d'un département, selon leur civilité. Pour des opérations commerciales pointues, il est peut-être intéressant de connaître toutes les femmes habitant le département du Var (83), par exemple. L'utilisateur doit donc préciser la civilité ainsi que le département. Mais souvenez-vous, le
champ Client_dep recense des codes postaux, codés sur 5 chiffres et non sur 2. Mais
Access offre la possibilité d'intégrer le symbole de l'étoile dans l'
expression des critères. C'est ainsi que nous pouvons extraire toutes les informations commençant par le terme renseigné, soit le département ici.
- Cliquer sur la croix de l'onglet pour fermer la requête R_Quel_Client,
- En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
- Dans la section Requêtes du ruban, cliquer sur le bouton Création de requête,
- Dans la boîte de dialogue qui suit, choisir la table Clients,
- Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
- Dans la représentation de la table, double cliquer sur le symbole de l'étoile (*),
- Puis, double cliquer sur les champs Client_civilite et Client_dep,
Nous souhaitons certes restituer toutes les informations de champs. Les critères à recouper quant à eux, doivent être posés sur les
champs Client_civilite et
Client _dep. En revanche, nous ne souhaitons pas les afficher en double.
- Décocher la case du champ Client_civilite et du champ Client_dep,
- Dans la zone Critères du champ Client_civilite, ajouter la condition suivante : [Quelle civilité doit être extraite ?],
Comme précédemment donc, nous leurrons
Access. En guise de champ, nous tapons une question destinée à l'utilisateur. Ce dernier devra répondre par
Madame ou
Monsieur.
- Dans la zone Critères du champ Client_dep, taper l'expression suivante :
Comme [Quel département, ex : 04] & '*'
Nous demandons à l'opérateur de préciser l'information par la saisie d'un département, codé sur deux chiffres. Ces deux chiffres correspondent aux deux premiers numéros des cinq chiffres d'un code postal. Nous devons donc l'intégrer dans l'
opérateur Access Comme et suffixer l'expression du symbole de l'étoile. Ainsi, nous recherchons tous les enregistrements pour lesquels le code postal commence par les deux chiffres renseignés par l'utilisateur. C'est la technique que nous avons apprise lors de l'exercice précédent sur la découverte des
requêtes sélection. Mais contrairement à cette précédente mise en pratique, l'expression contient une partie dynamique. Il s'agit du paramètre entre crochets. Ce paramètre doit être concaténé à la partie statique par le Et commercial (&). L'expression statique est naturellement inscrite entre guillemets.
Comme nous avons défini deux
critères dynamiques, la requête est susceptible de poser deux questions à la suite. C'est ce que nous proposons de vérifier.
- Enregistrer la requête sous le nom : R_Quels_dep_et_civ,
- Dans le ruban contextuel Créer, cliquer sur le bouton Exécuter,
La première question se déclenche aussitôt. Il s'agit de préciser la condition sur le
champ Client_civilite.
- Taper le texte Monsieur par exemple puis valider par Ok,
Access ne reconnaissant pas le nom du champ mentionné dans le second critère, la deuxième question surgit immédiatement.
- Taper le nombre 83 pour le département du Var,
- Puis, valider par le bouton Ok,
Seuls les hommes pour le département du Var sont extraits, conformément aux demandes dynamiques recoupées. Il en résulte 5 enregistrements sur les 34 de départ. L'information pertinente est extraite selon les besoins.
Requête paramétrée numérique
Nous avons paramétré des
requêtes dynamiques en imbriquant des conditions avec des opérateurs textuels, voués à l'origine à produire des
critères statiques. De la même façon, nous pouvons exploiter les opérateurs numériques, notamment d'inégalité, pour offrir des extractions répondant aux
conditions numériques, émises à l'instant T.
- Fermer la requête R_Quels_dep_et_civ,
Sur la
table Produits, nous souhaitons bâtir une
requête capable d'isoler tous les enregistrements pour lesquels la popularité est supérieure à une valeur à définir et le stock inférieur à une valeur à préciser.
- Dans le ruban Créer, cliquer sur le bouton Création de requête,
- Dans la boîte de dialogue, sélectionner la table Produits,
- Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
- Dans la représentation de la table, double cliquer sur le symbole de l'étoile,
- Double cliquer ensuite sur les champs produit_vues et produit_stock,
- Puis, décocher leur case respective,
Il s'agit en effet des champs sur lesquels nous souhaitons recouper les
conditions dynamiques. Ils sont déjà intégrés dans la restitution par le symbole de l'étoile.
- Dans la zone Critères du champ produit_vues, taper l'expression suivante :
>=[A partir de quel nb de vues ?]
- Dans la zone Critères du champ produit_stock, taper l'expression suivante :
<=[Inférieur à quel stock ?]
Ces
conditions dynamiques sont émises sur la même ligne. Donc, comme nous l'avons appris, elles doivent être recoupées, soit vérifiées ensemble. Nous demandons d'extraire tous les articles dont la popularité est au moins égale à la valeur saisie par l'utilisateur et inférieure ou égale à une autre valeur renseignée au moment de la demande.
Comme précédemment, deux boîtes de dialogue doivent donc s'enchaîner. C'est ce que nous proposons de constater.
- Enregistrer la requête sous le nom : R_Vues_Stocks,
- Puis, cliquer sur le bouton Exécuter dans le ruban contextuel Créer,
- A la première invite, saisir le nombre 3500 par exemple, puis valider par Ok,
- A la seconde invite, saisir la valeur 7 pour la limite supérieure du stock,
- Puis, valider de nouveau par Ok,
Nous obtenons une extraction de 40 enregistrements. Selon les contraintes définies par l'opérateur, il s'agit des 40 articles à la fois les plus populaires et pour lesquels le stock est faible. Cette requête permet donc d'isoler rapidement toutes les références à réapprovisionner d'urgence.
Bien sûr, nous pouvons aussi produire des
requêtes paramétrées multitables. Nous n'y manquerons pas, lorsque les
tables Commandes et
Detail_commandes offriront du contenu. Dans le prochain exercice, nous aborderons les
requêtes de synthèse. Comme leur nom l'indique, ces dernières sont précieuses pour réaliser des études statistiques sur les données de la
base Access.