formateur informatique

Autoriser les critères vides dans des conditions croisées

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Autoriser les critères vides dans des conditions croisées
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


    Inscription Newsletter
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,
Champ calculé de requête Access pour isoler le numéro de département

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,
Créer une requête Access sur une autre requête

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,
Ajouter des champs dans la grille de requête Access

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,
Organisation des champs dans la grille de requête Access pour ordre des critères paramétrés



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,
Requête Access paramétrée avec question sous forme de boîte de dialogue

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,
Extraction multicritère par requête Access

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é ?]




Autoriser des critères vides cumulés dans des requêtes Access

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.

Extraction Access sur des critères recoupés ou ignorés

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.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn