![]()
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 utilisé les mots clés Et et Ou. Nous avons vu notamment qu'il est nécessaire de bien comprendre la différence entre Et et Ou. Nous avons également utilisé Pas, et nous avons constaté que lorsqu'il s'agit de créer des requêtes avec des critères dans plusieurs colonnes, ce n'était pas si évident. |
| 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 terminenent par "ine", ou encore les gens dont le nom contientn telle ou telle lettre, ou encore récupérer les gens dont le prénom comporte un certain nombre de lettres. Nous verrons également comment utiliser les signes < et > également avec du texte. |
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 ?
Oui. Exactement. Du moment que le nom commence par D, il peut y avoir n'importe combien 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 ?
Sauvegardez cette nouvelle requête sous R_CelebritePrenomTermineParE, et description : Prenom : Comme"*e"
Oui. Faites-le : Créez une nouvelle requête qui va donner ce résultat :
: Tous les
gens dont le nom de famille contient la lettre F, au début, au milieu ou à la
fin. Sauvegardez cette requête sous R_CelebriteNomContientF, et Description :
NomClient : Comme "*f*"
C'est très intéressant cette petite étoile, parce que comme vous le savez, nous avons été ennuyé à cause de quelques erreurs de saisie. Si nous voulions extraire les gens mariés, si nous mettions "Marié(e)" comme critère d'EtatCivil, Access va omettre les gens "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 plus tard.
Enregistrez cette requête sous R_CelebriteVraimentMarie, avec la description EtatCivol : 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 maintenant pour
appliquer cet exemple tout seul : Créez une nouvelle requête qui extrait les
noms composés, et sauvegardez-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
Lancez la requête. Vous avez 14 personnes, dont le prénom comporte systématiquement 4 lettres. Sauvegardez 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.
Sauvegardez-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, sauvegardez-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 sauvegardez-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 qu'e 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 sont entre Dupont et Smith. Sauvegardez cette requête sous R_CelebriteEntreDupontEtSmith, avec la description NomClient : Entre "Dupont" et "Smith"
| Cette fois, nous avons vu la très importante étoile *. Elle 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 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 la version de ProCD.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 procd.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.
| Lors de la prochaine leçon, nous allons voir comment extraire des dates ou des plages de dates. Nous verrons qu'il ne faut pas confondre les dates et les années. Nous aborderons également la possibilité d'extraire des enregistrements qui ne contiennent rien, ainsi que la possibilité d'extraire les gens décédés (Oui ou Non). Enfin, nous verrons qu'il est possible de masquer certaines colonnes si besoin est. |