Temps
nécessaire pour suivre cette leçon : Une vingtaine à
une quarantaine de minutes
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 continuer avec les groupes, mais cette fois, nous allons voir que, contrairement à ce que j'avais prétendu, il est possible de faire des regroupements sur des champs uniques (Comme le nom, le prénom ou encore la date de naissance). |
Justement. Imaginons que nous voulions faire un état groupé par date de naissance !
Ah oui... MAIS... Que penseriez-vous de grouper les gens non pas par date de naissance, mais par ANNEE de naissance !
Eh bien non ! L'assistant état va être assez malin pour récupérer l'année de naissance dans chaque date de naissance, pour justement grouper les gens par année.
Demandez un état/Nouveau/Assistant état, basé sur T_Celebrite, cliquez sur suivant, sélectionnez le nom, le prénom et la date de naissance. Vous savez faire ça je suppose ?
A ce tableau, demandez le groupe par DateNaissance :
. En bas gauche, il y a un bouton
.
Cliquez dessus : Choisissez dans la liste "Année", et cliquez
sur OK :
. Maintenant,
il montre bien qu'il va grouper par année,
et CA, c'est un groupe digne de ce nom ! :
.
Constatez que j'ai encadré en rouge le groupe de date de naissance PAR
ANNEE, et j'ai souligné en rouge la date de naissance
qui est restée dans la liste des champs (NomClient, Prenom, DateNaissance)
Vous réfléchissez bien ! Cliquez sur suivant, et triez par date
de naissance, cette fois :
Comme on va avoir plein de gens pour chaque année, ce serait bien de les afficher triés du plus jeune au plus vieux.
Cliquez sur Suivant, Demandez une présentation Bloc,
encore Suivant, demandez une présentation Société, Suivant, donnez comme nom E_CelebriteGroupeParAnnee, et Terminer. Voici un extrait de la première page :
Si on ne voulait pas qu'elles s'affichent, nous aurions simplement construit une requête basée sur T_Celebrite qui contient l'année de naissance, le nom et le prénom, et comme critère de Année de naissance, on aurait écrit "Pas Null", et c'est aussi simple que ça
Sur la 2ème page, constatez qu'il y a pas mal de gens nés en
1950 et, comme nous l'avons demandé (),
elles sont bien triées de la personne la plus jeune à la plus
âgées (Janvier à décembre):
C'est simplement par la ou les premières lettres du nom que nous allons
grouper.
Par exemple, tous les gens qui commencent par A, puis tous les gens qui commencent
par B, etc.
Faisons ça. Fermez votre état.
Demandez un nouvel état, avec assistant, basé sur T_Celebrite,
avec simplement le champ Prenom et NomClient. Groupez par le nom : .
Vous constatez que dans la partie de gauche il ne reste plus rien (le champ
prénom est maintenant à droite). Cliquez sur
Exactement.
Il aurait groupé par les 2 premières lettres : Tous les gens qui commencent par AA, pui AB, puis AC ... Puis BA, puis BB, etc.
Ici, ce n'est pas une bonne idée. Mais si nous avions eu une liste de produits avec des numéros de ce style :
LEG01 - Poireau
FRU01 - Abricots
DES01 - Crème
FRU02 - Pommes
FRU03 - Oranges
DES02 - Gateau
LEG01 - Poireau
LEG01 - Pommes de terre
Les 3 premières lettres du code sont représentatives. On pourrait alors grouper avec les "3 lettres initiales", pour obtenir un état qui ressemblerait à ceci :
FRU
FRU01 - Abricots
FRU02 - Pommes
FRU03 - Oranges
DES
DES01 - Crème
DES02 - Gateau
LEG
LEG01 - Poireau
LEG01 - Pommes de terre
Oui, laissez donc une seule lettre de regroupement Cliquez donc sur OK :
Cliquez sur Suivant, triez par Nom, demandez une perésentation "Echelonné", cliquez sur Suivant, choisissez "Informel", Suivant, appelez votre état E_CelebriteGroupeAlphabetique, et Terminer.
Il y a malgré tout quelques imperfections, comme par exemple tout au
début une erreur :
Exactement, il n'a pas digéré ce fait. Ceci dit, ce n'est pas très normal non plus d'avoir des clients sans nom !!!
A la dernière page, il y a des initiales non utilisées :
Là tout de suite, non. Il faudra attendre de voir des techniques plus avancées pour ça... Eh oui, Access se laisse dompter jusqu'à un certain point.. Dès que vous désirez des fonctions qui ne sont pas directement prévues, c'est tout de suite un gros travail d'investigation technique!
Effectivement, vous avez un tout bel état, c'est vrai. Mais avez vous pensé aux conséquences ? (Qu'on appelle également "Effets de bord").
Vous avez maintenant 4 clients de plus que prévu, ce qui va paraître bizarre, et dans tous les formulaires, dans toutes les rquêtes et dans tous les autres états, vous aurez sans arrêt ces 4 "clients parasites" qui vont venir s'afficher au milieu de tout le monde alors qu'on en a pas besoin ailleurs que dans ce cas précis
Ah oui ? Et si vous lancez l'état 10 fois par jour, vous allez faire ce travail 10 fois par jour ?
Vous allez vite en avoir marre !
D'autant plus que vous risquez bien une fois ou l'autre d'oublier de les enlever !
Mais non, séchez vos larmes ! La conception Access, ça ne s'apprend pas comme le patin à roulettes. Nous y reviendrons. La leçon est terminée, fermez votre état, et surtout, si vous avez fait l'expérience d'ajouter les 4 clients bidons, retirez-les.
Les groupes dans les
états s'effectuent traditionnellement sur des champs répétitifs,
tels que le pays ou le domaine, mais ce n'est pas une règle absolue
: il est possible de grouper par des champs uniques, mais dans ce cas, il
faut trouver des points de regroupement : Comme l'année de naissance,
ou la ou les premières lettres du nom ou du prénom. Ces options
se conçoivent lors de l'exécution de l'assistant état
(![]() |
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. |
Voici un petit fichier au format texte (Aliment.txt). Il va s'agir pour vous de l'importer en tant que table dans votre base de données habituelle Proformation.mdb. Comment ? Vous avez oublié comment importer des données venant d'ailleurs ? Revoyez la leçon 18 pour vous rafraîchir la mémoire. Astuce : Si vous cliquez simplement sur le lien Aliment.txt, votre navigateur va vous en afficher le contenu... Il suffit de faire Fichier/Enregistrer sous pour lui donner un nom, et ainsi l'avoir sur votre propre disque dur afin de pouvoir l'importer dans Access. Une fois que vous avez réussi à l'importer,
appelez votre table T_Aliment. Elle devrait ressembler à ceci (Un
seul champ, donc): Votre travail ? Simplement créer un état
avec l'assistant afin d'avoir un état qui ressemble à ceci
: ATTENTION : astuce de la mort-qui-tue : Si vous essayez de créer un état avec assistant basé sur une table qui ne contient qu'UN SEUL champ, l'assistant état va se comporter un peu différemment, et ne carrément PAS vous proposer de faire un regroupement. La seule parade que j'ai trouvé pour avoir l'assistant qui se comporte normalement, et me permette de faire un regroupement, est de créer un nouveau champ que j'appellerai "Bidon", directement dans la table T_Aliment : C'est un champ qui reste tout vide, et ne sert à rien d'autre que de permettre le regroupement sur le champ Aliment. 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