|
1 - Introduction |
|
| |
|
Dès que des données ont été introduites dans une table, des moyens simples sont à notre disposition pour y
rechercher de l'information. Ces moyens, qui font partie de ce que nous appelons la "recherche manuelle", sont très spécifiques
du SGBD considéré. Dans le cas d'Access, nous pouvons utiliser : |
|
|
|
| |
|
la fonction " Rechercher". Cette fonction est présente (avec plus ou moins de
perfectionnements) dans tous les logiciels qui manipulent du texte, y compris Access et les autres SGBD ; |
|
|
le tri. Nous pouvons facilement rechercher de l'information dans une colonne si elle est triée
par ordre croissant. De plus, le tri croissant fait apparaître en tête de colonne la valeur la plus
faible, alors que le tri décroissant fait apparaître en tête la valeur la plus forte ; |
|
|
les filtres. Appliqués à une table, ils ne laissent apparaître que les enregistrements répondant
à un -- ou à quelques -- critères simples. Il existe plusieurs sortes de filtre : le filtre par
sélection, le filtre hors sélection (l'inverse du précédent), le
filtre par formulaire et le filtre/tri. |
|
|
|
|
Ces techniques de recherche "manuelle" ne permettent pas d'effectuer des opérations très sophistiquées, mais elles
ont le mérite de la rapidité et de la simplicité. Quand elles s'avèrent insuffisantes, il faut utiliser l'outil de recherche dont sont
dotés tous les SGBD, et qui s'appelle la requête. Nous étudierons les requêtes dans les chapitres 10 à 17. |
|
|
|
Il existe d'ailleurs une transition presque continue entre filtres et requêtes, puisque la formulation d'un filtre élaboré
fait appel aux mêmes techniques que celle d'une requête, qu'un filtre peut être enregistré comme une requête, et qu'une requête peut servir
de filtre. |
|
|
|
Comme pour les autres chapitres de ce tutoriel (ou tutorial, ou cours en ligne), nous utiliserons le SGBD Access
(version 2002) comme support pratique. On notera que, dans ce logiciel, tout ce qui concerne le tri et les filtres s'applique non
seulement aux tables, mais aussi aux formulaires. |
|
|
|
2 - La fonction "Rechercher" |
|
| |
|
Une table étant ouverte, et une colonne étant sélectionnée, cliquons dans le menu sur "Édition", puis sur
"Rechercher..." : la fenêtre "Rechercher et remplacer" s'ouvre, l'onglet "Rechercher" étant sélectionné.
Nous serions arrivés au même résultat en cliquant sur l'icône
"Rechercher". Par défaut, la zone "Rechercher dans :" contient le nom de la première colonne, et la zone
"Rechercher :" le premier élément de cette colonne, comme le montre l'image ci-dessous. |
|
|
 |
|
|
|
Il est une valeur par défaut dont il faut se méfier comme de la peste, c'est "Champ entier" dans la zone
"Où :". Cette zone, en effet, propose trois options : |
|
|
|
| |
|
N'importe où dans le champ |
|
|
Champ entier |
|
|
Début de champ |
|
|
|
|
Dans le premier cas, la chaîne recherchée occupe tout ou partie du champ. Dans le second cas, beaucoup plus restrictif,
la chaîne correspond exactement au contenu du champ. Dans le troisième cas, également restrictif, la chaîne occupe le début ou la
totalité du champ. Le résultat d'une recherche dépend évidemment beaucoup du choix effectué, et "Champ entier" ne correspond
pas forcément à ce que vous avez l'intention de faire. Attention, donc, à ce "Où :" ! |
|
|
|
3 - Le tri |
|
| |
|
Trier une table sur une colonne donnée est une opération fort simple. La table étant
ouverte, nous sélectionnons la colonne désirée en plaçant le curseur en tête de colonne, puis en cliquant lorsqu'une petite flèche noire
apparaît. Le contenu de la colonne apparaît en blanc sur fond noir. Nous cliquons alors sur l'icône
pour obtenir le tri en ordre croissant, ou sur l'icône
pour obtenir le tri en ordre décroissant. Si ces icônes n'apparaissent
pas, nous sélectionnons "Affichage" dans le menu, puis "Barres d'outils", puis nous cochons "Feuilles de données
de tables". |
|
|
|
Si la table ne contient que quelques centaines d'enregistrements, l'opération de tri est presque instantanée. Si la table
contient plusieurs centaines de milliers d'enregistrements, l'opération peut demander une minute environ, pour un PC de qualité moyenne.
Comme on peut le constater de visu, le tri s'effectue sur le disque dur, si bien qu'une machine possédant un disque SCSI (un serveur
de fichiers, par exemple) se montrera beaucoup plus rapide qu'un PC ordinaire en pareil cas. |
|
|
|
Lorsque nous refermons la table, le SGBD nous demande si nous voulons conserver la modification que nous lui avons fait subir.
En cas de réponse affirmative, la table apparaît de nouveau triée quand nous la rouvrons. En fait, le SGBD Access conserve les
données dans l'ordre où elles ont été initialement saisies, mais ré-applique le tri lors de l'ouverture de la table -- ce que confirme
l'expérience suivante. |
|
|
|
Créons une table à une seule colonne de type texte, saisissons quelques chaînes de caractères, puis trions la table en
ordre croissant et enregistrons-la en confirmant la modification. Créons alors une seconde colonne de type NuméroAuto, enregistrons cette
modification, et consultons la table. Surprise : la numérotation de la second colonne ne suit pas l'ordre alphabétique, mais l'ordre
de création initial, comme le montre la figure ci-dessous. Nous verrons au paragraphe 7 où se trouve stockée l'information de tri
d'une table. |
|
|
|
|
-- Tri --> |
|
-- |
Enregistrement & création colonne autonumérotée |
--> |
| Nom |
Rang |
| Truc |
1 |
| Chose |
2 |
| Machin |
3 |
|
|
Table initiale |
|
Table triée |
|
Retour à l'ordre initial |
|
|
|
|
Conclusion : pour changer définitivement l'ordre des informations enregistrées dans une table, il faut utiliser une
requête permettant de recréer la table sous un autre nom, ou de l'insérer dans une autre table (vide). |
|
|
|
4 - Le filtre par sélection et le filtre hors sélection |
|
| |
|
Le filtre par sélection. Une table étant ouverte, sélectionnons une chaîne de caractères
dans l'une de ses colonnes, puis cliquons sur l'icône
"Filtrer par sélection". Tous les enregistrements disparaissent, à l'exception de ceux qui contiennent la chaîne sélectionnée dans
le champ considéré. En bas de la table s'inscrit le nouveau nombre de lignes, suivi de la mention "(Filtré)". |
|
|
|
Le retour de la table à son état initial s'obtient en cliquant sur l'icône
"Supprimer le filtre", ou en refermant la table (avec ou sans
confirmation). On notera que l'icône fonctionne comme un
commutateur : le filtre étant supprimé, l'icône prend le nom "Appliquer le filtre", et cliquer de nouveau dessus a pour
effet de rétablir le filtre. |
|
|
|
Il est fréquent que le filtre par sélection facilite considérablement l'examen du contenu d'une table. Supposons par exemple
que la table considérée contiennent le résultat des ventes d'une entreprise, et que dans une colonne figure le nom du commercial
responsable de chaque vente. Pour obtenir l'ensemble des ventes d'un commercial donné, il suffit que nous sélectionnions son nom, puis que
nous cliquions sur l'icône . Toutes les ventes ne le concernant pas
disparaissent instantanément. Le filtre par sélection est un outil simple -- mais extrêmement rapide -- d'analyse des données contenues
dans une table. |
|
|
|
Attention ! le filtre par sélection fonctionne comme la fonction "Rechercher", en ce sens que la position de la
chaîne sélectionnée importe beaucoup. Si cette chaîne : |
|
|
|
| |
|
n'est pas en contact avec les extrémités du champ, le SGBD retient les enregistrements qui contiennent cette chaîne (n'importe
où dans le champ) ; |
|
|
se trouve au début du champ, le SGBD retient les enregistrements dont le champ commence par cette chaîne ; |
|
|
se trouve en fin de champ, le SGBD retient les enregistrements dont le champ finit par cette chaîne. |
|
|
|
|
Le filtre hors sélection. Ce filtre fonctionne à l'opposé du filtre par sélection :
tous les enregistrements disparaissent, à l'exception de ceux qui ne contiennent pas la chaîne sélectionnée. Mais il n'existe pas
d'icône qui corresponde au filtre hors sélection, si bien qu'il nous faut passer par le menu. Nous cliquons sur
"Enregistrements", puis sur "Filtrer", et enfin sur "Filtrer hors sélection". |
|
|
|
La figure ci-dessous illustre le fonctionnement des deux filtres (par sélection et hors sélection) dans un cas fort
simple : |
|
|
|
|
<-- |
Filtre hors sélection |
<-- |
|
--> |
Filtre par sélection |
--> |
|
|
Table filtrée hors sélection |
|
Table initiale |
|
Table filtrée par sélection |
|
|
|
|
Nous pouvons appliquer un filtre par sélection au résultat d'un précédent filtre par sélection, de manière à affiner une
recherche. En d'autres termes, les filtres par sélection sont emboîtables. |
|
|
|
5 - Le filtre par formulaire |
|
| |
|
Le filtre par formulaire permet de filtrer une table en utilisant simultanément plusieurs
chaînes de caractères, liées par des opérateurs logiques ET et OU. Il peut être considéré comme un perfectionnement du filtre par
sélection, avec cependant une réserve : les chaînes choisies représentent obligatoirement le contenu exact du champ. |
|
|
|
Pour illustrer le fonctionnement de ce filtre sur un exemple, nous créons une table ("Table5") contenant quatre
colonnes, et nous y introduisons des données comme représenté sur la figure ci-dessous. Puis nous cliquons sur l'icône
"Filtrer par formulaire". S'ouvre alors une fenêtre intitulée
"Table5: Filtrer par formulaire". Une liste déroulante (dédoublonnée) nous permet, pour chaque colonne, de choisir une
donnée : le SGBD filtrera en appliquant l'opérateur logique ET entre ces termes. Nous pouvons également effectuer un OU, en cliquant
sur l'onglet du même nom. Pour appliquer le filtre, nous cliquons sur l'icône
"Appliquer le filtre", et nous obtenons le résultat représenté
ci-dessous. Pour supprimer le filtre, nous cliquons une seconde fois sur l'icône
qui s'appelle maintenant "Supprimer le filtre". |
|
|
| Table "Table5" initiale |
|
| Commercial |
Produit |
Nombre |
Date |
| Chose |
Lave-vaisselle |
3 |
03/03/2003 |
| Machin |
Aspirateur |
5 |
04/03/2003 |
| Chose |
Cocotte-minute |
6 |
03/03/2003 |
| Truc |
Réfrigérateur |
4 |
03/03/2003 |
| Machin |
Mixer |
4 |
04/03/2003 |
| Chose |
Lave-vaisselle |
1 |
04/03/2003 |
|
|
| Filtre par formulaire |
|
 |
|
Table "Table5" filtrée par formulaire |
|
| Commercial |
Produit |
Nombre |
Date |
| Chose |
Lave-vaisselle |
3 |
03/03/2003 |
| Chose |
Cocotte-minute |
6 |
03/03/2003 |
|
|
|
|
|
A notre connaissance, le filtre par formulaire est peu utilisé. On peut lui reprocher son manque de souplesse : les
chaînes que l'on choisit représentent exactement le contenu du champ. De plus, si on pratique un OU, le premier terme de
l'alternative disparaît de l'écran. Le filtre par sélection, plus simple, mais plus souple, rend de meilleurs services. |
|
|
|
6 - Le filtre/tri |
|
| |
|
Le tri que nous avons considéré au paragraphe 2 ne concerne qu'une seule colonne, c'est un tri simple. Dans
certains cas, nous avons besoin d'effectuer un tri sur plusieurs colonnes, encore appelé tri multiple. Le
filtre/tri est l'outil qui nous permet d'arriver à nos fins sans avoir besoin de créer une requête. |
|
|
|
Considérons l'exemple du fichier journal d'un site web, dans lequel chaque ligne correspond à une requête (une demande de
fichier). Importé dans un SGBD, ce fichier devient une table, dans laquelle la première colonne contient la date, la seconde colonne
l'heure, etc. Mais l'importation, et les manipulations qui la suivent, peuvent perturber l'ordre dans lequel les requêtes ont été traitées
par le serveur web. Pour rétablir cet ordre, il faut que nous puissions trier la table sur la date d'abord, et sur l'heure ensuite. |
|
|
|
Pour ce faire, nous cliquons dans le menu sur "Enregistrements", puis sur "Filtrer", et enfin sur
"Filtre/tri avancé...". S'ouvre une fenêtre "Filtre" qui ressemble, à s'y méprendre, à celle qui permet de définir une
requête. A noter que le filtre/tri possède une icône , mais que cette
dernière ne se trouve pas en standard dans la barre d'outils "Feuille de données de table". On peut l'y introduire par
personnalisation de la barre d'outils. |
|
|
|
Nous remplissons la grille comme indiqué dans la figure ci-dessous, puis nous appliquons le filtre en cliquant sur l'icône
"Appliquer le filtre", enfin nous refermons la fenêtre
"Filtre". Nous vérifions que la table est effectivement triée comme nous l'avons demandé. |
|
|
| Date |
Heure |
| 02/03/2003 |
16:21:36 |
| 03/03/2003 |
10:00:25 |
| 02/03/2003 |
12:23:18 |
| 01/03/2003 |
13:40:01 |
|
|
 |
|
| Date |
Heure |
| 01/03/2003 |
13:40:01 |
| 02/03/2003 |
12:23:18 |
| 02/03/2003 |
16:21:36 |
| 03/03/2003 |
10:00:25 |
|
|
| Table "Table3" initiale |
|
Filtre/tri |
|
Table "Table3" finale |
|
|
|
|
Si nous refermons puis rouvrons la table, nous constatons que le filtre/tri agit toujours : la table reste triée. Si
nous cliquons comme précédemment sur "Enregistrements", puis sur "Filtrer", et enfin sur
"Filtre/tri avancé...", le filtre/tri s'affiche de nouveau comme nous l'avons défini, et nous pouvons le modifier à loisir. Par
contre, si nous créons une nouvelle colonne autonumérotée, nous constatons que la table reprend son ordre initial, comme dans le cas d'un
tri simple. Nous constatons de plus que le filtre/tri est de nouveau vierge, ce qui montre que toute modification notable de la table fait
disparaître le filtre/tri. Dans le cas où la table n'est pas modifiée, par contre, le filtre/tri la suit comme son ombre. |
|
|
|
La ligne "Critères :" permet, comme dans une requête, de sélectionner les enregistrements à afficher sur des critères
plus ou moins complexes. Les techniques correspondantes sont exposées dans les chapitres relatifs aux requêtes. |
|
|
|
Le filtre/tri est un outil intéressant, car il permet de doter une table d'un tri permanent plus ou moins élaboré. Chaque
fois que nous ouvrons la table, elle se présente sous la forme triée que nous désirons, sans que nous ayons à intervenir. |
|
|
|
|
7 - L'enregistrement d'un tri ou d'un filtre |
|
| |
|
Ouvrons la table contenant des noms, et faisons-lui subir un tri par sélection sur "Truc". Ouvrons ensuite la
fenêtre "Filtre" : le terme "Truc" apparaît sur la ligne "Critères :", les guillemets indiquant qu'il
s'agit d'une chaîne de caractères. La fenêtre "Filtre" révèle donc à la fois le stockage des filtres et celui des tris. |
|
|
|
Si nous appliquons successivement à une table un filtre par sélection, puis un filtre/tri, nous retrouverons trace des deux
opérations dans la fenêtre "Filtre", comme le montre la figure ci-dessous, relative à la table contenant des dates et des heures. |
|
|
 |
|
|
|
Un filtre/tri peut être enregistré : il devient alors une requête. Pour ce faire, la fenêtre filtre étant ouverte, nous
cliquons sur l'icône "Enregistrer en tant que requête". Pour
distinguer le filtre d'une requête, nous lui donnons un nom commençant par "Filtre...". Par précaution, nous rajoutons le nom de
la table à laquelle il s'applique. Exemple : Filtre3_table5. |
|
|
|
Pour réutiliser le filtre ainsi enregistré, nous ouvrons la table concernée, puis la fenêtre "Filtre", et nous
cliquons sur l'icône "Charger à partir d'une requête". La liste
des requêtes s'affiche, dans laquelle nous choisissons le filtre désiré. Ce dernier s'affiche dans la grille, et nous pouvons l'appliquer
en cliquant sur l'icône . |
|
|
|
Un filtre enregistré sous forme d'une requête bénéficie de toutes les propriétés de ces dernières. |
|
|
|
8 - Conclusion |
|
| |
|
Ce chapitre traite de techniques modestes, mais qui ont leur utilité. La fonction "Rechercher" permet de vérifier
si une donnée figure ou non dans une table. Dans la négative, il faut tout de suite vérifier que l'on ne s'est pas trompé de colonne, ni
de place dans le champ... |
|
|
|
Tout utilisateur de SGBD qui manipule des tables se sert du tri à tour de bras. Le tri par sélection est une technique
très simple qui rend bien des services. On l'utilise souvent couplée à la fonction "Rechercher". Cette dernière permet de
trouver la première occurrence d'une chaîne donnée, avant d'appliquer le tri par sélection qui fournit immédiatement les autres. |
|
|
|
Le filtre/tri, enfin, mérite le détour, car il permet de présenter une table triée comme on a envie de la voir et de
l'utiliser. |
|
|