Accueil Recherche | Plan Technique | Liens | Actualités | Formation | Emploi | Forums | Base
TUTORIEL cerig.efpg.inpg.fr 
Vous êtes ici : Accueil > Formation > Tutoriels > Bases de données relationnelles > La recherche manuelle
        Révision : 03 mars 2003
 
                  Les bases de données
relationnelles
                 
Chap.
précéd.
Plan du
tutoriel
Liste des
tutoriels
Chap.
suivant
Chapitre 9 : 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 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.
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 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 Exemple de 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
        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.

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.
Nouvelle grille du filtre/tri
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.
Chapitre précédent Plan du tutoriel Liste des tutoriels Chapitre suivant
Accueil | Technique | Liens | Actualités | Formation | Emploi | Forums | Base
Copyright © CERIG/EFPG 1996-2003
Réalisation et mise en page : J.C. Sohm