![]()
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 procd.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
| La dernière fois, nous avons vu comment faire pour trier plusieurs colonnes en même temps, ainsi que la manière d'extraire seulement les valeurs extrêmes d'une plages de valeurs, comme la liste des 5 personnes les plus agées, ou les 3 personnes les plus riches |
| 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. |
C'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,
dites france, et cliquez sur OK. Cette fois,
ce sont tous les français qui apparaissent.
Ne fermez pas cette requête, mais sauvegardez-là sous R_CelebriteParametrePaysTralala
Exactement.
Oui. D'ailleurs, [Tralala] ou [Boudin blanc], c'est pas terrible. On va la
jouer finaud : essayez [Entrez le pays désiré]
:
.
Lancez la requête, et essayez Etats-Unis : 
Eh oui...
Ah non, effectivement ! C'est exactement comme si vous écriviez "Etats Unis" 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. C'est comme ça...
Sauvegardez 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
Sauvegardez cette requête sous R_CelebriteParametre2Pays, quittez cette
requête, et mettez 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... Bon, vous n'allez tout de même pas 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 est inférieur à 6000
francs... Et donc, comme toujours, chaque fois que vous allez lancer la requête,
vous pourrez entrer un chiffre différent.
Sauvegardez 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 avez 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.
Sauvegardez cette requête sous R_CelebriteParametreNomCommenceParQuelqueChose
Comme "*" & [Quelle lettre de fin ?]
Nous verrons ça un peu plus tard. 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 continnent 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 pas 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 celui 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 ProCD. 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 ProCD 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 procd.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.