Leçon 27 : Requêtes : Les paramètres dans 
  les critères avec les crochets [ et ]
Temps 
    nécessaire pour suivre cette leçon : Entre une bonne demie heure 
    et trois quarts d'heure
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données ProFormation.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
| Dans cette leçon, nous allons voir comment une seule requête peut contenir plusieurs résultats, en utilisant ce qu'on appelle un paramètre variable. | 
SommaireC'est justement le sujet de ce cours. Créez une nouvelle requête, 
        comme d'habitude, avec le prénom, le nom et le pays. Comme critère 
        de PaysOrigine, écrivez [Tralala] 
        (Tralala entre crochets: le crochet s'obtient en appuyant sur la touche 
        ALT GR (touche à droite de la barre d'espacement) et è : 
        ![]()
 
        : 
 (Pour refermer 
        le crochet, c'est ![]()
)
ATTENTION, donc, ce sont des CROCHETS, PAS des parenthèses !
Justement, ça ne veut rien dire.
Lancez la requête : 
. 
  Effectivement, Access vous demande également : "C'est quoi, ça, 
  Tralala ? Jamais entendu parler !". Mais il est plus poli : Il vous 
  dit "Entrez la valeur du paramètre", Tralala. Dans la 
  zone blanche, précisez que Tralala est égal à Suisse : 
  
. Cliquez sur OK. 
Comme vous avez précisé que Tralala = Suisse (comme critère 
  de Pays), la requête vous renvoie les suisses : 
. 
  Revenez en mode création, et RELANCEZ immédiatement une 
  deuxième fois la requête. A nouveau, cette boîte de dialogue 
  
 apparaît. 
  Cette fois, répondez france, et cliquez 
  sur OK. Cette fois, ce sont tous les français qui apparaissent.
Ne fermez pas cette requête, mais Enregistrez-là sous R_CelebriteParametrePaysTralala
Exactement. Tralala est ce qu'on appelle une variable, ou un paramètre.
Oui. D'ailleurs, [Tralala] ou [Boudin blanc], c'est pas terrible. Soyons plus 
  élégant : Ecrivez plutôt : [Entrez 
  le pays désiré] : 
. 
  Lancez la requête, et essayez Etats-Unis : 
Eh oui...
Effectivement ! C'est exactement comme si vous écriviez "Etats Unis" directement comme critère de PaysOrigine, ça ne marchera pas non plus parce que vous avez oublié le tiret.
Non. Pas maintenant. C'est possible, mais c'est vraiment plus compliqué. Il faudra attendre d'être dans les formulaires très avancés pour ça !
Enregistrez cette requête sous R_CelebritePaysParametre
Oui, puisque les paramètres entre crochets se comportent exactement 
  comme des critères normaux : [Entrez 
  le 1er pays] Ou [Entrez le 2ème pays] : 
. 
  Lancez la requête. à la question "Entrez le 1er pays", 
  répondez belgique, et cliquez sur OK. Il vous pose alors la 2ème 
  question : "Entrez le 2ème pays", répondez suisse, et 
  cliquez à nouveau sur OK. Le résultat comprend tous les gens de 
  Belgique et de Suisse
Enregistrez cette requête sous R_CelebriteParametre2Pays, 
  quittez cette requête, et placez les descriptions suivantes : 
Mais oui, exactement. Par exemple, admettons que notre table T_Celebrite soit en fait une table de candidats pour une agence de travail temporaire :Vous avez alors souvent des clients à la recherche de personnel qui vous téléphonent, et généralement vous demandent : "J'ai besoin de quelqu'un pour m'aider, mais mon budget maximum est de X francs". X francs étant variable... Vous n'allez tout de même pas vous amuser à créer 50 requêtes avec la liste des gens sont le salaire est au maximum de 10000 francs, de 12000 francs, de 15000 francs, etc. Non ! Vous allez créer une requête paramétrée avec comme paramètre de salaire : <[Quel plafond salarial ?].
Essayez, créez une nouvelle requête comme d'habitude, basée 
  sur T_Celebrite, avec le prénom, le nom et le salaire, et comme critère 
  de salaire : 
. Lancez 
  la requête. à la question "Quel plafond salarial", répondez 
  6000, et cliquez sur OK : Voilà, vous avez la liste des gens dont le 
  salaire demandé est inférieur à 6000 francs... Et donc, 
  comme toujours, chaque fois que vous allez lancer la requête, vous pourrez 
  entrer une valeurdifférente. 
Enregistrez cette requête sous R_CelebriteParametreSalairePlafondVariable
Bien sûr. Nous allons mélanger un critère fixe et un critère 
  variable : essayez Pas 0 Et <[Quel plafond salarial 
  ?] : 
. 
  Lancez la requête, et écrivez encore 6000 
  : Vous obtenez la liste de tous les gens qui gagnent moins de 6000 francs par 
  mois, mais en excluant les salaires inconnus. On peut d'ailleurs en plus 
  les trier par ordre croissant pour clarifier la liste : 
Faites Fichier/Enregistrer Sous : R_CelebriteParametreSalairePlafondVariableSans0
Bon, dans notre table des célébrités, nous n'avons pas 
  tellement de menuisiers, mais nous avons un champ domaine qui va tout à 
  fait convenir. Donc, si nous voulons l'ensemble des célébrités 
  qui font de la chanson par exemple, avec un plafond salarial variable, il faudrait 
  ajouter le champ Domaine, et lui mettre chanson 
  comme critère : Essayez : 
Vous avez tout compris. Essayez : 
. 
  Lancez la requête : Il vous demande d'abord quel métier vous voulez 
  (parce que c'est le plus à gauche des 2 critères), répondez 
  chanson et cliquez sur OK. Il vous demande ensuite le plafond salarial, répondez 
  6000, et cliquez sur OK. Vous obtenez alors l'ensemble des 4 personnes 
 
  qui font de la chanson et dont le salaire est connu et inférieur à 
  6000 francs.
Faites Fichier/Enregistrer sous : R_CelebriteParametreDomaineEtSalaire, 
  et fermez-là. Donnez les descriptions adéquates à ces dernières 
  requêtes : 
Bien sûr. Pour éviter d'avoir une requête avec tous les 
  gens qui commencent par A, une autre requête pour tous les gens qui commencent 
  par B, etc. jusqu'à Z, créez une nouvelle requête comme 
  d'habitude avec le prénom et le nom. Comme critère de nom, si 
  vous écrivez a*, Access va transformer 
  ça en Comme "a*" (Leçon 
  24), et vous renvoyer les gens qui commencent par la lettre A... Donc, si 
  vous écrivez  [Quelle lettre de début 
  ?]*, on pourrait s'attendre à ce qu'il nous demande une lettre, 
  vous écrivez par exemple D, et il nous renvoie tous les gens qui commencent 
  par D. Bon, il se trouve que ce n'est pas si simple : En fait, si vous écrivez 
  [Quelle lettre de début ?]* ou même 
  Comme "[Quelle lettre de début ?]"*, 
  ça ne marche pas. En fait il faut écrire exactement ceci : Comme 
  [Quelle lettre de début ?] & "*"
 
  pour que ça marche. Essayez : Lancez la requête, et lorsqu'il vous 
  demande Quelle lettre de début ? répondez d, 
  et cliquez sur OK. Vous voici avec la liste de tous les gens dont le nom commence 
  par D.
. En fait, 
  vous auriez même pu écrire DE par exemple lors de la demande, et 
  vous auriez obtenu la liste de tous les gens qui commencent par DE. Essayez.
Enregistrez cette requête sous R_CelebriteParametreNomCommenceParQuelqueChose
Comme "*" & [Quelle lettre de fin ?]
Nous verrons ça ultérieurement en détail. Juste pour résumer en un mot : c'est un signe de concaténation (pour mettre ensemble des textes bout à bout).
Comme "*" & [Donnez une partie du nom] 
  & "*". Essayez : 
. 
  Lancez la requête, et lors de la demande de paramètre, écrivez 
  DE, et OK. Le résultat 
 
  donne tous les gens qui contiennent DE quelque part dans leur nom.
C'est une requête très intéressante si vous n'êtes pas certain de connaître l'orthographe du nom d'une personne : Par exemple, vous recherchez Louis De Funès, mais vous ne savez plus si De Funès s'écrit De Funès, ou Defunès, Defunes ou De Funés... Lancez cette requête, et à la question Donnez une partie du nom, répondez fun, et OK : Voici la liste de tous les gens qui contiennent fun dans leur nom, et donc De Funès (dans notre cas, c'est d'ailleurs le seul, ce qui facilite bien la tâche).
Faites Fichier/Enregistrer sous : R_CelebriteParametreNomContientTexte, 
  et fermez-là. Donnez des descriptions à ces 2 nouvelles reqêtes 
  : ![]()
| Les paramètres entre crochets [ et ] permettent de créer une seule requête qui renvoie une foule de résultats différents, puisque c'est l'utilisateur qui exécute la requête qui doit, au dernier moment, préciser sa demande. Cette astuce permet d'éviter la création de dizaines ou même de centaines de requêtes différentes. | 
 
      
  | 
  
|  
       Encore une fois, il ne s'agit pas de créer une nouvelle base de données, mais vous allez devoir créer quelques requêtes dans votre base de données ProFormation. Toutes les requêtes seront basées sur T_Celebrite, et devront contenir au minimum le Prénom et le NomClient. 
 Téléchargez la solution de l'exercice ici, qui n'est autre que ProFormation telle qu'elle devrait être à la fin de cette leçon  | 
  
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.
Avez-vous une question technique 
  concernant cette leçon ? Cliquez 
  ici !
  Une remarque sur cette leçon ? Un problème 
  ? Une erreur ? une ambiguité ? Soyez 
  gentil de m'en informer