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