![]()
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 vu en détail comment faire pour extraire une partie des champs, avec l'utilisation de l'étoile *, ainsi que l'utilisation du point d'interrogation, qui permet d'extraire un certain nombre de caractères précisément. Nous avons également vu comment utiliser les signes < et > avec du texte. |
| Dans cette 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. |
Non. Il s'agit d'une date, donc, vous ne pouvez pas simplement mettre
l'année. Vous êtes obligé d'écrire comme critère <1.1.1960. Essayez : Créez une nouvelle requête
comme d'habitude, et demandez le Prénom, le Nom et la date de naissance. Comme
critère de la date de naissance, écrivez <1.1.1960
. Lorsque vous appuyez
sur ENTER, ou que vous cliquez dans une autre case, Access transforme cette date
comme ceci : <#01.01.1960#.C'est normal
:
Lancez la requête. Vous avez 55 résultats, tous antérieurs au premier janvier 1960. Savegardez cette requête sous R_CelebriteVieille, avec la description DateNaissance : < #01.01.1960#.
Le critère serait : Entre 1.1.1930 et 31.12.1939. Et PAS Entre 1930 et 1939, donc ! Essayez : Créez cette requête qui extrait toutes les célébrités nées dans les années 30. Vous devriez en obtenir 10. Sauvegardez cette requête sous R_CelebriteAnnee30, avec la description DateNaissance Entre #01.01.1930# Et #31.12.1939#.
C'est assez difficile... La preuve, c'est que toutes les dates de naissance que j'ai mis sont fictives, donc fausses. Par contre, on peut essayer de filtrer les dates de naissances vraissemblablement fausses, comme par exemple les dates de naissances postérieures à l'an 2000 et antérieures à l'an 1900...
Ah non ! Personne n'est né à la fois avant 1900 et après 1999 ! Ce serait
<#01.01.1900# OU >#31.12.1999#. Mais ne serait-ce pas encore plus
élégant d'écrire Pas Entre #01.01.1900# Et
#31.12.2000#. Essayez : Créez une nouvelle requête comme d'habitude,
avec le critère de la date de naissance : pas entre
1.1.1900 et 31.12.1999. Vous obtenez ce résultat :
. On voit d'un coup d'oeil que Napoléon, Walt Disney
et Sacha Guitry ont des dates de naissance vraissemblables... Par contre Michel
Simon, Johnny Weissmuller et Cathy Zeta-Jones ont des dates de naissances
fatalement erronées puisque si on en croit notre résultat, ces personnes ne
seraient pas encore nées... L'erreur de saisie provient vraissemblablement du
fait que la personne qui a saisit la date de Michel Simon par exemple a écrit
15.12.20 au lieu de 15.12.1920... Et Access à compris 2020 au lieu de 1920...
Vous vous rappelez ? C'était dans la leçon
7.
Ne corrigez pas les erreurs, et fermez cette requête sous le nom R_CelebriteDateNaissanceIncorrecte. Description : DateNaissance : Pas Entre #01.01.1900# Et #31.12.1999#
Non. ça ne marchera pas.
Non plus. En fait, 0 n'est pas la même chose que rien en informatique...
C'est comme ça. Pour obtenir les gens dont la date de naissance n'est pas
connue, vous devez écrire null comme critère de la date de naissance :
. Lorsque vous
appuyez sur Enter, ou que vous cliquez dans une autre case, null se transforme
en Est Null.
ATTENTION : Il faut bien écrire NULL. Pas NUL ni NULLE ! Créez cette nouvelle requête avec null comme date de naissance, et Lancez-là : Vous obtener 14 enregistrements, dont la date est chaque fois inconnue.
Enregsitrez cette requête sous R_CelebriteDateNaissanceInconnue, et mettez la description "DateNaissance : Est Null"
Exactement, oui, et, par opposition, si vous vouliez l'ensemble des gens qui n'ont PAS de remarque, vous écririez Pas Null. Essayez : Créez une nouvelle requête comme d'habitude, avec le nom, le prénom et la remarque, mettez Pas Null comme cruitère de Remarque, lancez la requête pour constater que vous avez bien 50 enregistrements, tous avec une remarque (par déduction, vous pouvez dire qu'il y a une personne sur deux qui a une remarque, puisque nous avons exactement 100 enregistrements). Le Pas Null se transforme automatiquement en Est Pas Null, c'est normal. Sauvegardez cette nouvelle requête sous R_CelebriteAvecRemarque, avec la description : "Remarque : Est Pas Null".
Essayons : Créez une nouvelle requête comme d'habitude, toujours basée sur T_Celebrite, et installez les champs Prenom, NomClient, et Decede. Lancez la requête telle quelle pour bien vous rappeler qu'il s'agit bien d'une case à cocher. Revenez en mode création. Le critère de Decede est soit Vrai, ou Oui, ou même -1.
Oui. Essayez :
En fait, c'est lié à la structure interne de votre PC. Sur tous les PC, quelque soit le contexte, Vrai (Oui) est représenté par -1, et Faux (Non) est représenté par 0. Mais pour que la vie nous soit plus facile, Access permet de modifier ce -1 par Oui, ou Vrai, et 0 par Non ou Faux.
Parfaitement. Bon, nous n'allons pas le faire car c'est vraiment la même chose. Fermez votre requête, et vous êtes maintenant en possession de 3 nouvelles requêtes : R_CelebriteDecedeeVrai, R_CelebriteDecedeeOui et R_CelebriteDecedee-1. Je pense que maintenant, vous avez bien compris l'histoire des descriptions : Je vous laisse leur mettre des descriptions appropriées.
ATTENTION DONC : Si vous mettez quelque
chose d'idiot comme critère de Decede, Par exemple "Vivant", non seulement ça ne veut rien dire, mais vous
allez carrément avoir cette erreur :
. Vous pouvez essayer
juste pour voir. (ne sauvegardez pas cette requête, c'est juste pour méntrer
l'erreur)
Passons maintenant à un autre sujet, mais en restant un peu quand même dans l'histoire des cases à cocher. Créez une requête toute simple qui extrait les sportifs (Le prénom, le nom, le domaine, avec comme critère de domaine : "sport"). Lancez cette requête toute bête : Vous avez la liste de tous les sportifs. C'est normal, c'est ce qu'on a demandé. D'ailleurs, dans la colonne Domaine, c'est marqué chaque fois Sport, Sport, Sport, Sport... Bon ben oui, on sait, c'est ce qu'on a demandé ! Il n'a pas besoin de le répéter comme ça sur toute la colonne...
Je vais vous montrer comment on fait pour extraire la liste des sportifs,
mais en évitant de répéter Sport sur toute la colonne : En fait nous allons
masquer cette colonne. Nous aurons toujours la liste des sportifs, mais
simplement le prénom et le nom. Revenez en mode création de cette requête.
Cliquez sur cette case à cocher pour l'enlever :
. Relancez la requête :
Cette fois, vous avez les mêmes 17 personnes, mais, la colonne Domaine n'est
plus représenté. Sauvegardez cette requête sous
R_CelebriteSportiveDomaineInvisible, avec la description : Domaine : "sport",
pas de coche
ATTENTION donc : Il est fort possible que vous cliquiez par mégarde sur cette coche, et que vous vous demandiez pourquoi tel ou tel champ n'apparait pas : Vous savez maintenant pourquoi
Exactement.
| Lorsqu'il s'agit d'extraire des plages de date, il ne faut pas utiliser simplement l'année, mais des dates complètes (entre 1.1.1980 et 31.12.1989). Les dates s'encadrent automatiquement de dièses #. Lorsqu'il s'agit de récupérer les enregistrements dont certains champs sont vides (non renseignés), il ne faut pas mettre 0 comme critère, mais Null, ou Pas Null. Les cases à cocher représentent Oui ou Non, Vrai ou Faux, -1 ou 0. Ce sont donc ces mots-clés qu'il faut utiliser lors qu'on veut extraire par exemple les gens décédés. Enfin, en mode création de la requête, la case é cocher se trouvant juste au dessus du critère permet de masquer telle ou telle colonne, alors qu'on lui a attribué un critère. |
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 ProCD tel qu'il 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.