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. |
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, 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