Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Autoriser des critères vides
Extraire des données sur de multiples conditions ou sur un seul critère au détriment des autres et ce, sur la base d'une seule
requête est l'
astuce que nous souhaitons démontrer dans ce nouveau volet. La question consiste donc à savoir comment autoriser des critères vides.
Source et procédure
Une
base de données relativement consistante est nécessaire pour ces manipulations. Nous proposons de la récupérer.
Cette base de données est constituée d'une
table nommée
t_sorties et d'une
requête nommée
r_sorties.
- Double cliquer sur la requête r_sorties pour l'afficher en mode Feuille de données,
Comme vous pouvez le voir, cette
table spécifique qui n'est autre qu'une
requête recense des activités de sorties. Ces loisirs sont notamment référencés sur leur département (s_dep), leur activité (s_act) et leur ville (s_Ville). La
requête puise toutes ces informations depuis la
table source. Mais elle ajoute un
champ calculé (r_dep) permettant d'isoler le numéro du département. En
mode création de la requête, vous pouvez constater que ce
champ calculé exploite la
fonction Access Gauche sur les deux premiers caractères du
champ s_dep :
r_dep:Gauche([s_dep];2).
Sur demande, nous souhaiterions pouvoir isoler les enregistrements correspondant à un numéro de département et/ou une activité et/ou une ville. Libre à l'utilisateur de définir l'un de ces trois critères, seulement deux d'entre eux ou encore les trois réunis. Et le tour de force consiste à ne bâtir qu'une seule
requête pour répondre à ces demandes dynamiques partielles ou complètes.
- Fermer la requête r_sorties en cliquant sur la croix de son onglet,
- 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, activer l'onglet Requêtes,
La
requête r_sorties est sélectionnée par défaut puisqu'elle est unique à ce stade.
- En bas de la boîte de dialogue, cliquer sur le bouton Ajouter puis sur le bouton Fermer,
Nous intégrons ainsi dans l'éditeur la
requête r_sorties dans sa représentation schématisée.
- Sélectionner tous les champs de cette requête à l'exception du champ s_dep,
- Puis, les glisser en direction de la grille de requête,
Dans la
zone Critères de cette grille nous devons poser des conditions dynamiques sur les
champs r_dep,
s_act et
s_ville. Ces conditions doivent donc pouvoir se recouper mais aussi être ignorées. Il s'agit de questions à destination de l'utilisateur au moment de l'exécution. Nous allons donc déployer les techniques que nous avions apprises à l'occasion de la
formation sur les requêtes paramétrées. L'idée consiste à leurrer
Access en incrustant une question entre crochets. Les crochets sont usuellement utilisés pour encadrer un nom de champ. Comme ce nom de champ ne sera pas reconnu,
Access demandera de préciser la valeur au moment de l'exécution. C'est ainsi que nous pourrons à loisir définir variablement le département et/ou la ville et/ou l'activité. Et l'enchaînement doit bien se produire dans l'ordre que nous venons d'énoncer. Pour qu'il soit respecté, nous devons organiser ces champs dans le même ordre.
- Par son étiquette, glisser le champ r_dep devant le champ s_Ville,
- De la même façon, glisser le champ s_act après le champ s_Ville,
- Puis, enregistrer (CTRL + S) la requête sous le nom r_choix,
Nous devons maintenant poser ces trois conditions facultatives.
- Dans la zone Critères du champ r_dep, inscrire le champ : [Numéro de département ?],
Nous l'avons dit, il s'agit d'un leurre. Ce champ bien renseigné entre crochets n'existe pas. La question va donc être restituée telle quelle au moment de l'exécution. Nous n'aurons plus qu'à affiner la condition en précisant le numéro de département souhaité pour l'extraction à réaliser.
- Dans la zone Critères du champ s_Ville, inscrire le champ suivant : [Quelle Ville ?],
- Puis, dans la zone Critères du champ s_act, inscrire le champ suivant : [Quelle activité ?],
Trois conditions entonnoirs à préciser sont donc définies pour une extraction particulièrement affinée.
- Enregistrer la requête (CTRL + S),
- Tout à fait à gauche du ruban Créer, cliquer sur le bouton Exécuter,
- Taper par exemple le numéro 26, puis cliquer sur le bouton Ok,
Les autres critères sont eux aussi à préciser, donc les boîtes de dialogue s'enchaînent.
- Saisir la ville de Valence par exemple puis cliquer sur le bouton Ok,
- Enfin, préciser l'activité Hotel sans accent et cliquer sur le bouton Ok,
Le résultat de l'extraction parfaitement affinée apparaît en mode
Feuille de données. La table d'origine contient 997 enregistrements. Et comme vous le constatez, seuls 8 persistent ici.
Mais nous pourrions très bien souhaiter des résultats plus larges en ne définissant que le département et la ville ou le département et l'activité ou encore pourquoi pas seulement le département. Malheureusement et en l'état, si vous exécutez de nouveau la
requête et que vous ne répondez pas à l'une des questions, en cliquant simplement sur le bouton Ok, l'extraction échoue. Le résultat est vierge dans sa restitution en mode Feuille de données.
L'
astuce consiste à exploiter le symbole de l'astérisque (*) dans la
syntaxe des critères. Ainsi, sans modifier globalement la construction, nous allons bénéficier d'une
requête permettant des
extractions multiples et variées.
- Dans le ruban Accueil, cliquer sur le bouton Affichage pour revenir en conception,
- Adapter les trois précédents critères comme suit :
Comme '*' & [Numéro de département ?]
Comme '*' & [Quelle Ville ?]
Comme '*' & [Quelle activité ?]
L'
opérateur Comme ainsi suivi du symbole de l'astérisque signifie
Commence par. Désormais, si l'information n'est pas précisée, grâce au caractère générique, toutes les données du champ correspondant seront considérées.
- Enregistrer et exécuter la requête,
- Taper de nouveau le numéro de département 26,
- Renseigner de même la ville de Valence,
- Puis, valider la troisième boîte de dialogue sans la renseigner en cliquant sur le bouton Ok,
L'extraction est un succès. Elle délivre fort naturellement plus de résultats puisque seuls deux conditions sont recoupées contrairement aux trois de la précédente exécution.
En raison de l'exploitation du caractère générique, toutes les villes portant le nom Valence sont incluses. Ce résultat est pertinent dans la mesure où il s'agit des communes limitrophes. Si vous exécutez de nouveau la
requête en ne renseignant que l'un des critères, le numéro de département par exemple, l'extraction s'étend à de plus nombreux enregistrements. Mais rien ne vous empêche de croiser les trois conditions. Voilà donc une
requête particulièrement souple et efficace. C'est donc cette
astuce du caractère générique ou WildCard dans la
syntaxe du critère qui permet de considérer ou d'ignorer la condition.