Recherche
1 connecté

  Création d'un index, tris et recherches

Création d'un index secondaire; tri de la base


dernière mise à jour le : samedi 12 janvier 2002

Reprenez l'exemple créé précédemment à l'aide de l'expert (avec ajout du DBGrid) ou téléchargez le ici (ce source ne peut marcher que si vous avez créé votre base de données conformément à la leçon 1)


Par défaut, votre base de donnée est triée dans l'ordre donné par notre index principal c'est à dire dans notre exemple, par n° d'ordre.

La création d'un index vous permettra de trier les enregistrements selon un autre ordre et de faciliter les recherches au sein de la base de données.

Ajout d'un index secondaire

L'ajout d'un index secondaire va se faire à partir du Module de base de données (le programme qui nous avait permis de créer notre base de données).

Avant de rentrer dans le ce Module de base de données, il faut mettre à False la propriété "active" du Table1 de notre programme (si ce n'est pas déjà fait) sous peine de ne pouvoir modifier la base de données (car déjà prise par notre application).

  • Ouvrez le Module de base de données (menu Outils / Module base de données) puis icône de gauche "Ouverture d'une table".

  • Dans la case alias, choisissez TEST et dans Nom choisissez "annuaire0.db". Choisissez Table / Restructurer. Dans la liste déroulante sous "propriétés de la table:" sélectionnez "index secondaires".

  • Cliquez sur le bouton "définir". En utilisant les boutons "flèches gauche et droite", vous pouvez choisir les champs qui seront indexés. Choisissez Nom et Age comme Champs indexés.

  • Vérifiez que la case "maintenu" est cochée.

  • Sortez en cliquant sur OK. Donnez par exemple "Index Nom et age" comme nom d'index.

 

 

Trier les enregistrements

Pour trier les enregistrements, il suffit d'affecter

  • la valeur "Index Nom et Age" à la propriété IndexName de notre Table1

  • ou "Nom;Age" à la propriété IndexFieldNames.

Il n'y a pas besoin de compiler le programme pour voir l'effet obtenu : l'effet est immédiat si la propriété active du composant Table1est à true et ce, dès la modification dans l'inspecteur d'objet. On remarquera que si on affecte une valeur à IndexFieldNames, la valeur de IndexName est mis à blanc. Réciproquement si vous affectez une valeur à IndexName, IndexFieldNames est mis à blanc.

Nos champs indexés étaient dans l'ordre Nom puis Age. Par conséquent, le tri obtenu est un tri selon le nom. Pour les enregistrements ayant le même nom on a un tri par âge.

On peut définir plusieurs index secondaires et par conséquent obtenir différents tris en fonction de l'index utilisé.

 

On peut, bien sur, affecter ces propriétés par programmation.

Exemple : ajouter un bouton et implémentez sa méthode OnClick de la façon suivante :

procedure TForm2.Button1Click(Sender: TObject);
begin
  Table1.indexName:='Index Nom et age';// tri par nom puis âge; utilisation de indexName
end;

Ajoutez un autre bouton et implémentez sa méthode OnClick de la façon suivante :

procedure TForm2.Button2Click(Sender: TObject);
begin
  Table1.IndexFieldNames:='NumOrdre';
  //revient au tri donné par l'index principal; utilisation de IndexFieldNames
end;

A ce stade, votre source doit ressembler à : source

Lancez votre programme pour le tester...


Leçon suivante

Retour au sommaire