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 :

         

 

 

       

   

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 : "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 seconde colonne ne suit pas l'ordre alphabétique, mais l'ordre de création initial, comme le montre la figure ci-dessous.

 

 

Nom

Truc

Chose

Machin

  -- Tri -->  

Nom

Chose

Machin

Truc

  --  

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 :

 

 

Nom

Truc

Machin

  <--  

Filtre hors
sélection

  <--  

Nom

Chose

Machin

Truc

  -->  

Filtre par
sélection

  -->  

Nom

Chose

 

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/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

       

Exemple de filtre/tri

       

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.

 

 

 

 

 

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.