|
Chapitre 8 : la
recherche manuelle |
|
|
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 : |
|
|||||||||
|
|
|
|
|
|||||||||
|
|
|
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 |
|
|||||||||
|
|
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
|
|
Il
est une valeur par défaut : "Champ entier" dans la zone
"Où :". Cette zone, en effet, propose trois options : |
|
|||||||||
|
|
|
|
|
|||||||||
|
|
|
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 |
|
|||||||||||||||||||||||||||||||||||||
|
|
|
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 seconde colonne ne
suit pas l'ordre alphabétique, mais l'ordre de création initial, comme le
montre la figure ci-dessous. |
|
|||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
|
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 |
|
||||||||||||||||||||||||||||||||||||
|
|
|
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
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
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 : |
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
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 : |
|
||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
|
|
|
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/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 |
|
|||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
|
|
|
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. |
|
|||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
|
|
6 - 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. |
|
|
|
|||