Sommaire
- Utilisation des crochets [ ]
- Utilisation de 2 paramètres variables avec OU dans un seul champ
- Signe plus petit que < associé à un paramètre variable entre crochets
- Mélange de paramètres variables et fixes
- Paramètres variables dans plusieurs champs différents
- Paramètres variables associé à l'étoile *
- Le paramètre entre crochets et l'étoile * aident à pallier aux problèmes d'orthographe
Admettons que je veuille une requête qui m'extrait tous les clients d'Allemagne : Je sais comment faire : Je demande Allemagne comme critère de Pays. Si je veux les clients Belges, je demande Belgique, etc. Mais si je voulais une requête par pays, je devrais créer 216 requêtes, soit une requête par pays ? Pas très pratique...
Utilisation des crochets [ ]
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 è :




C'est quoi, Tralala ?
Justement, ça ne veut rien dire.Lancez la requête :


Comme vous avez précisé que Tralala = Suisse (comme critère de Pays), la requête vous renvoie les suisses :


Ne fermez pas cette requête, mais Enregistrez-là sous R_CelebriteParametrePaysTralala
D'accord. Donc, à chaque lancement de la requête, il va m'être demandé quel pays je désire, et ce pays va être placé à la place de [Tralala], ce qui fait que je n'ai besoin que d'une requête au lieu d'une requête par pays, c'est génial ! Au dernier moment, je précise mon pays, et hop, l'affaire est bouclée...
Exactement. Tralala est ce qu'on appelle une variable, ou un paramètre.Et entre crochets, finalement je met ce que je veux : [Tralala], [Boudin blanc] ou [Patin à roulettes], de toute façon, je vais devoir préciser le pays tout pareil...
Oui. D'ailleurs, [Tralala] ou [Boudin blanc], c'est pas terrible. Soyons plus élégant : Ecrivez plutôt : [Entrez le pays désiré] :

Excellent ! Comme ça, on a vraiment l'impression qu'il nous pose la question... C'est évidemment plus convivial que [Tralala] !
Eh oui...Par contre, il faut vraiment faire super-attention à l'orthographe... Si on oublie le trait d'union entre Etats et Unis, je suppose que ça ne marche plus ?
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.On ne peut pas dans la boîte de dialogue "Entrez la valeur du paramètre" avoir la liste déroulante des pays possibles pour éviter les fautes ?
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
Utilisation de 2 paramètres variables avec OU dans un seul champ
Peut-on demander la liste de tous les gens de deux pays : Belgique et Suisse par exemple
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] :

Enregistrez cette requête sous R_CelebriteParametre2Pays, quittez cette requête, et placez les descriptions suivantes :

C'est vraiment exactement comme des critères normaux finalement, ces fameux paramètres ?
Signe plus petit que < associé à un paramètre variable entre crochets
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 :

Enregistrez cette requête sous R_CelebriteParametreSalairePlafondVariable
Ca marche, par contre, il me donne toujours ces fameux salaires inconnus à 0 francs... On peut les éliminer ?
Mélange de paramètres variables et fixes
Bien sûr. Nous allons mélanger un critère fixe et un critère variable : essayez Pas 0 Et <[Quel plafond salarial ?] :

Faites Fichier/Enregistrer Sous : R_CelebriteParametreSalairePlafondVariableSans0
Et si le client dit "J'ai besoin d'un MENUISIER que je peux payer maximum 6000 francs par mois" ?
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 :
Paramètres variables dans plusieurs champs différents
AH OK ! Et évidemment, si à la place de chanson, le met [Entrez le métier voulu], il va me demander d'entrer quel métier je veux, et ensuite, il va me demander quel plafond salarial je désire, et alors j'aurai un résultat doublement personnalisé !
Vous avez tout compris. Essayez :

Faites Fichier/Enregistrer sous : R_CelebriteParametreDomaineEtSalaire, et fermez-là. Donnez les descriptions adéquates à ces dernières requêtes :

Paramètres variables associé à l'étoile *
Dans le même ordre d'idée, peut-on avec une seule requête demander l'ensemble des gens dont le prénom commence par telle ou telle lettre ?
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 ?] & "*"

Enregistrez cette requête sous R_CelebriteParametreNomCommenceParQuelqueChose
Et si on voulait que ça se TERMINE par une certaine lettre ?
Comme "*" & [Quelle lettre de fin ?]D'accord. C'est quoi ce & ?
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).Le paramètre entre crochets et l'étoile * aident à pallier aux problèmes d'orthographe
Et si je voulais l'ensemble des gens qui CONTIENNENT telle ou telle lettre n'importe ou dans leur nom ?
Comme "*" & [Donnez une partie du nom] & "*". Essayez :

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 :

Bon... Hem... On peut résumer ?
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. |
Avez-vous bien compris ?
|
Exercice
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.
|
0 commentaires:
Enregistrer un commentaire