Temps nécessaire pour suivre cette leçon : Environ 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 extraire des parties de champs : Comment extraire l'ensemble
des gens dont le nom commence par D ou F, comment extraire l'ensemble
des prénoms qui se terminent par "ine", ou encore
les gens dont le nom contiennent telle ou telle lettre, ou encore
récupérer les gens dont le prénom comporte
un certain nombre de lettres. |
Oui. Essayons cela. Créez une nouvelle requête basée sur T_Celebrite, avec le Prénom et le NomClient. Comme critère de NomClient écrivez d* : . Lorsque vous appuyez sur ENTER ou que vous cliquez dans une autre case, ça se transforme en Comme "d*". C'est normal.
Lancez la requête. Vous avez bien 10 enregistrements, tout le monde ayant le nom qui commence par D ?
C'est ça. Du moment que le nom commence par D, il peut y avoir un nombre quelconque de caractères après, ça prendra.
Enregistrez cette requête sous R_CelebriteNomCommenceParD, et fermez-là. Donnez lui la description NomClient : Comme"d*"
Par exemple, si vous vouliez la liste de tous les gens dont le prénom se termine par la lettre e, comment feriez-vous ?
Oui. Essayez. Créez une nouvelle requête comme d'habitude, demandez le Prénom et le Nom, et mettez *e comme critère de Prenom. Vous avez bien 22 enregistrement, tous les prénoms se terminant par e ?
Enregistrez cette nouvelle requête sous R_CelebritePrenomTermineParE, et description : Prenom : Comme"*e"
Oui. Faites-le : Créez une nouvelle requête qui va effectivement renvoyer ce résultat : : Tous les gens dont le nom de famille contient la lettre F, au début, au milieu ou à la fin. Enregistrez cette requête sous R_CelebriteNomContientF, et Description : NomClient : Comme "*f*"
Cette petite étoile * est très intéressante, car comme vous vous en souvenez certainement, nous avons été ennuyé lors de précédentes leçons (Notamment les filtres sur les tables à la leçon 19) à cause de quelques erreurs de saisie.
Si nous voulions extraire les gens mariés, nous mettrions "Marié(e)" comme critère d'EtatCivil, Access va omettre les gens dont l'état civil est très exactement : "Marié"... Avec la petite étoile, nous allons demander les gens mar*.
Essayez : Créez une nouvelle requête comme d'habitude, avec comme critère d'état civil : mar*
Lancez la requête : Vous devez obtenir 55 enregistrements, et vers le bas de la liste, vous allez trouver... Vincent Lagaf qui est... Marié !. Nous pourrions ici très facilement corriger son état civil pour le mettre à Marié(e), mais laissons cette erreur exprès pour faire d'autres expériences de même type plus tard.
Enregistrez cette requête sous R_CelebriteVraimentMarie, avec la description EtatCivl : Comme "mar*"
Il y a d'autres applications : Par exemple, on pourrait avoir la liste des gens dont le nom est composé (Catherine Zeta-Jones, Louis De Funès, Patrick Poivre d'Arvord), comment feriez-vous ?
N'oubliez pas ceux qui ont un trait d'union !
Exactement. Bon, eh bien je crois que vous êtes assez averti pour appliquer cet exemple tout seul : Créez une nouvelle requête qui extrait les noms composés, et Enregistrez-là sous R_CelebriteNomCompose, avec la description NomClient : Comme "* *" Ou Comme "*-*". Vérifiez bien que vous avez ce résultat :
Oui, mais pas avec l'étoile * puisque celle-ci contient autant de lettres que possible. Il faut utiliser le point d'interrogation : ?
Créez une nouvelle requête comme d'habitude, et comme critère de Prenom, écrivez : Comme "????".
ATTENTION : Vous ne pouvez PAS simplement écrire
????. Access ne va pas accepter.
ATTENTION BIS : J'ai constaté que
sous certaines version d'Access, pour des raisons que j'ignore, l'utilisation
du point d'interrogation fait planter (tomber en panne) complètement
Access. Aussi, il est nécessaire pour éviter celà d'encadrer
les ? par des guillemets : "????"
Lancez la requête. Vous avez 14 personnes, dont le prénom comporte systématiquement 4 lettres. Enregistrez cette requête sous R_CelebritePrenom4Lettre (Eh oui : Pas de S à Lettre, même si c'est une faute d'orthographe manifeste.) Description : Prenom : Comme "????"
Comme "B???"
Exactement. Essayez : Créez cette requête que vous me proposez. Enregistrez-là sous R_CelebriteFrancaisComplet. Description : PaysOrigine : "Fr?nce"".
Non, parce qu'il y a DEUX lettres CC... Vous n'avez qu'à écrire Comme "Fr?nce" Ou Comme "Fran??e"...
Trop compliqué !
Ecrivez simplement dans ce cas Comme "Fr*ce", ça résume tout d'un seul coup : Vous aurez tous les pays qui commencent par "Fr - Quelque chose - ce". Faites-le : Créez cette requête qui extrait tous les français de cette façon, Enregistrez-là sous R_CelebriteTousLesFrancaisSansException, avec la description : PaysOrigine : Comme "Fr*ce". (vous devriez avoir tous les "France", + Julia Roberts qui vient de "Francce" et Bourvil qui vient de "Frence") dans vos 51 enregistrements.
Vous pourriez, mais c'est trop compliqué. Comme critère pour le nom, essayez d'écrire simplement >V
Exactement ! Essayez : Faites cette requête, exécutez-là, constatez que vous avez bien ces 5 enregistrements : , et Enregistrez-là sous R_CelebriteFinAlphabet, avec comme description NomClient : >V
Non. Il n'y est pas parce qu'il n'existe pas dans la table.
En fait, par exemple, Van damme est plus grand que V. Il serait apparu s'il existait. En fait la toute petite différence qu'il y a entre >V et >=V, c'est que dans le cas de >V, s'il y avait quelqu'un dont le nom de famille est exactement V (ce qui est fortement improbable, vous en conviendrez...), il n'apparaitrait pas, tandis que dans le cas >=V, il apparaitrait.
Oui : Essayez : Créez une nouvelle requête, et dans le critère de NomClient, écrivez simplement : Entre Dupont et Smith. Ca marche. Bon, pour constater le résultat de manère probante, n'oubliez pas de trier les noms par ordre alphabétique une fois que vous avez lancé la requête.
Normalement, le premier client sera Fernandel, et le dernier Alfred Sirven, tous les noms se situant alphabétiquement entre Dupont et Smith. Enregistrez cette requête sous R_CelebriteEntreDupontEtSmith, avec la description NomClient : Entre "Dupont" et "Smith"
Cette fois, nous avons vu la très importante
étoile *. E lle permet de rechercher des parties de texte au début,
au milieu ou a la fin des champs. Nous avons également vu le point d'interrogation ? qui permet de représenter une seule lettre ou un seul chiffre, ou un seul caractère quelconque. Nous avons vu que leur utilisation est différente, et qu'il faut bien réfléchir avant d'utiliser l'un ou l'autre. Nous avons vu enfin qu'il est possible d'utiliser le signe >, <, >=, <= également avec du texte. |
Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses. |
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 la version de ProFormation.MDB 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