![]()
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, avons vu comment extraire des dates ou des plages de dates. Nous avons vu qu'il ne faut pas confondre les dates et les années. Nous avons également abordé 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 avons vu qu'il est possible de masquer certaines colonnes si besoin est. |
| Dans cette leçon, nous allons voir comment faire pour trier plusieurs colonnes en même temps, ainsi que la manière d'extraire seulement les valeurs extrêmes d'une plages de valeurs, comme la liste des 5 personnes les plus agées, ou les 3 personnes les plus riches |
Créez une nouvelle requête, comme d'habitude, et placez dans cet ordre :
. Si vous
lancez requête telle quelle, vous aurez la liste simple de tous les gens, dans
l'ordre dans lequel elles ont été rentrées. Vous pouvez bien entendu toujours
trier par n'importe quelle colonne avec le bouton droit de votre souris, et en
choisissant Tri Croissant, mais ce tri ne sera pas mémoriser. Nous allons voir
dans cette leçon qu'il possible de mémoriser les tris avec la requête.
Revenez ou restez en mode création de cette requête. Cliquez dans la zone Tri
de Domaine :
. En cliquant dans cette zone, ça fait apparaître une petite
flèche. Si vous cliquez sur cette petite flèche, vous pouvez choisisr entre 
Choisissez Tri croissant pour le domaine :
. Lancez la requête :
Vous
constatez que tout le monde est là, et que les domaines sont triés par ordre
alphabétique : D'abord ceux qui n'ont pas de domaine, ensuite ceux qui ont le
domaine ??, puis ???, puis Affaires, Chanson, etc... Une fois de plus, nous
constatons quelques erreurs de saisie : Pourquoi atrribuer ?? ou ??? à des gens
dont le domaine est inconnu... Autant le laisser en blanc ! Ne changez rien :
Laissons volontairement ces erreurs.
Astuce : Plutôt que de cliquer sur
la petite flèche
pour choisir Croissant, vous pouvez double-cliquer directement
dans la zone de tri :
. Croissant apparait automatiquement. Si vous recliquez encore
deux fois sur Croissant, il se transforme en Décroissant, et encore deux clics,
le tri disparait.
Exactement.
Eh bien, justement, non ! Nous allons pouvoir trier par plusieurs colonnes en
même temps. Démonstration : Demandez le tri alphabétique EGALEMENT sur
PaysOrigine :
.Lancez la requête, et regardez bien ce qui se passe : A
première vue, rien n'a changé, la table est toujours triée par ordre
alphabétique du Domaine. Mais regardons de plus près une série de données : Ceux
qui font de la chanson :

Les pays sont triés alphabétiquement pour chaque domaine : D'abord ceux qui n'ont pas de pays (Jennifer Lopez), ensuite : Belgique, Canada, Etats-Unis, France, Pays-Bas et Royaume-Uni.
Exactement. Et nous allons continuer : Prenons les "Chanson" de France :
. Ils ne sont
pas du tout dans l'ordre : Célibataire, Rien, Célibataire, Marié(e), Divorcé(e),
Marié(e), Marié(e), ... C'est n'importe quoi !
!Exactement. C'est ça ! Tiens, on va même faire une petite variante puisque
vous avez bien compris : Ne choisissez pas Croissant, mais Décroissant :
. Lancez la
requête, et regardez principalement ce qui se passe au niveau des "Chanson",
"France" :
Les états civils sont triés en ordre alphabétique inverse :
Marié(e), Divorcé(e), Célibataire, et Rien.
Non, pas du prénom, justement. Vous demandez juste l'ordre alphabétique du
nom, parce que sinon, il va d'abord mettre le prénom par ordre alphabétique, et
ensuite les noms, ce qui est idiot. Faites donc :
, et lancez la requête.
Regardez principalement la section des Chanson - France - Marié(e) :
. Ils sont
triés par ordre alphabétique du nom de famille : Brassens, Cabrel, Gainsbourg,
Goya et Hallyday...
Sauvegardez cette requête sous R_CelebriteMultiCleDeTri, avec la description "Tri par Domaine, Pays, EtatCivil et NomClient"
Exactement. Toujours.
Oui. D'ailleurs, faites le test : Restez dans cette requête, et déplacez le
Pays de manière à ce que ce soit la première colonne. Eh oui, ce sont de bien
vieux souvenirs cette histoire de déplacement de colonnes. Revoyez la leçon
21 pour vous rafraîchir la mémoire si besoin est. Une fois que vous avez
cette disposition :
, lancez votre requête.
Faites Fichiers/Enregistrer SOUS : R_CelebriteMultiCleDeTri2 avec la description "Tri par Pays, Domaine, EtatCivil et NomClient"
Oui. Nous ne l'avons pas fait, parce que dans notre cas ç'aurait été un peu idiot, nous n'avons absolument pas assez de données pour que ce soit représentatif (A part Hallyday qui est représenté 2 fois (Johnny et David), il n'y a pas vraiment d'autres exemples dans notre table).
Nous allons maintenant regarder une intéressante fonction d'Access, plus ou
moins liée aus tris : C'est la fonction "Première valeurs". Créez une nouvelle
requête, comme d'habitude, avec les champs Nom, Prénom et SalaireMensuel.
Demandez le tri décroissant par salaireMensuel seulement :
. Ce qui aura pour effet
de donner la liste de tous les gens, les plus riches en premier lieu.
Admettons maintenant que vous désiriez afficher seulement les 5 personnes les
plus riches de votre table : Cliquez sur cette petite déroulante, dans la barre
d'outils, au dessus de votre écran, sous les menus :
, et choisissez 5 :
. Lancez la
requête :
. Vous obtenez effectivement les 5 premières personnes les plus
riches.
Sauvegardez cette requête sous R_Celebrite5LesPlusRiche (Ne quittez pas cette requête)
Bien sûr, oui.
Oui. Essayez : Ecrivez 1 dans cette liste
et lancez la requête
Faites Fichier/EnregistrerSous : R_CelebriteLaPlusRiche
!
Oui, mais ils gagnent tous les deux 30'000 francs... S'il n'en avait choisi qu'un çaurait été qui ? Stallone ou Sirven ?
Oui. Parce qu'Access ne veut pas vous renvoyer au hasard l'un des deux. PAR
CONTRE... Si vous aviez :
, alors, çaurait été différent : En effet, commne vous avez 2
clés de tris : Le salaire ET le Nom, dans ce cas, il n'y a plus d'ambiguïté :
Access trie donc d'abord par salaire, et, A SALAIRE EQUIVALENT, il tris par
ordre alphabétique des noms... Ce qui fait que comme dans notre table, nous
avons 2 personnes qui gagnent le même salaire : Stallone et Sirven, Access va
les renvoyer par ordre alphabétique : D'abord SIrven, ensuite STallone. Et, dans
ce cas, si vous demandez le
résultat de la requête, il ne va plus renvoyer les deux
personnes, mais effectivement SEULEMENT la première : Alfred SIrven :
!
Faites Fichier/EnregistrerSous : R_CelebriteLaPlusRicheAlphabetique. Fermez
cette requête, et mettez les descriptions suivantes dans ces 3 nouvelles
requêtes : 
Oui. C'est le même principe. Par exemple, admettons que vous aimeriez obtenir
les 10% des personnes les plus agées de votre liste, créez une nouvelle requête
comme d'habitude, et demandez :
, et écrivez 10% dans la zone des premières valeurs :
. Lancez
la requête.
Tout est normal : 14 personnes, c'est justement parce qu'il y a 14 personnes dont la date est inconnue, et comme c'est trié par ordre croissant de date de naissance, les dates vides sont placées en premier. En fait, il faudrait exclure les dates vides. Vous vous rappelez comment faire ?
Exactement. Essayez ! 
Sauvegardez cette requête sous R_Celebrite10PourCentLesPlusAgee. Donnez lui la desccription : DateNaissance : Ordre décroissant, Premières valeurs : 10%
Attention : Vous avez demandé la liste de toutes les personnes dont la date de naissance n'était pas nulle ! Il n'y a donc plus 100 personnes, mais 100 - 14 personnes sans dates = 86 personnes (on a vu un peu plus haut dans la leçon qu'il y avait 14 personnes sans date de naissance). 10% de 86 personnes, c'est 8.6 personnes. Comme il n'est pas possible évidemment d'afficher 8.6 personnes, Access en affiche 9.
Exactement.
| Les requêtes servent à extraire une partie des données d'une table, mais également à trier. Il est possible de trier sur un, deux ou quarante-sept champs... Les tris s'effectuent de gauche à droite : C'est d'abord la coonne la plus à gauche qui est triée, ensuite, vers la droite. Si la première colonne est Pays, et la deuxième est NomClient, Access va trier tous les pays par ordre alphabétique, et pour tous les habitants d'un même pays, ils seront alors triés par ordre alphabétique du nom. Le tri est étroitement lié avec la notion de Premières Valeurs. Il est possible d'extraire les 12 personnes les plus jeunes, ou les 27% des gens dont le salaire est le plus élevés, en utilisant la liste déroulante "Premièeres valeurs". En cas d'égalité, Access affiche les 2 ou plusieurs enregistrements comme s'il n'en s'agissait que d'un seul. |
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 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.