Spécification d'un fichier d'index dBASE

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'ensembles de données BDE - Index

Remarque : Le moteur de base de données Borland (BDE, Borland Database Engine) a été déprécié. Il ne sera donc pas amélioré. Par exemple, le BDE ne prendra jamais en charge Unicode. Vous ne devriez pas entreprendre de nouveaux développements avec BDE. Prévoyez plutôt de migrer vos applications de bases de données existantes de BDE vers dbExpress.

Sur la plupart des serveurs, pour spécifier un index, vous utilisez les méthodes communes à tous les ensembles de données de type table. Ces méthodes sont décrites dans Tri des enregistrements avec des index.

Cependant, pour les tables dBASE utilisant des fichiers d'index autres que le fichier d'index MDX d'exploitation ou des index dBASE III PLUS (*.NDX), utilisez plutôt les propriétés 'IndexFiles et IndexName'. Assignez à la propriété IndexFiles le nom d'un fichier d'index autre que le fichier MDX d'exploitation ou listez les fichiers .NDX. Spécifiez ensuite un index dans la propriété IndexName pour qu'il trie effectivement l'ensemble de données.

Lors de la conception, cliquez sur le bouton point de suspension dans la valeur de la propriété IndexFiles dans l'inspecteur d'objets, pour invoquer l'éditeur de fichiers d'index. Pour ajouter un fichier d'index .MDX ou .NDX : cliquez sur le bouton Ajouter dans la boîte de dialogue Fichiers d'index et sélectionnez le fichier dans la boîte de dialogue d'ouverture. Répétez ce processus pour chaque fichier d'index .MDX ou .NDX. Cliquez sur le bouton OK dans la boîte de dialogue Fichiers d'index après avoir ajouté tous les index voulus.

Cette même opération peut être exécutée par programmation lors de l'exécution. Pour cela, accédez à la propriété IndexFiles en utilisant les propriétés et méthodes des listes de chaînes. Quand vous ajoutez un nouvel ensemble d'index, appelez d'abord la méthode Clear de la propriété IndexFiles de la table pour supprimer toute entrée existante. Appelez la méthode Add pour ajouter chaque fichier d'index .MDX ou .NDX :



 with Table2.IndexFiles do begin
   Clear;
   Add('Bystate.ndx');
   Add('Byzip.ndx');
   Add('Fullname.ndx');
   Add('St_name.ndx');
 end;



 Table2->IndexFiles->Clear();
 Table2->IndexFiles->Add("Bystate.ndx");
 Table2->IndexFiles->Add("Byzip.ndx");
 Table2->IndexFiles->Add("Fullname.ndx");
 Table2->IndexFiles->Add("St_name.ndx");



Après avoir ajouté des fichiers d'index .MDX ou .NDX, les noms des index individuels du fichier d'index sont accessibles et modifiables par la propriété IndexName. Les repères d'index sont aussi listés en utilisant la méthode GetIndexNames et en inspectant les définitions d'index à travers les objets TIndexDef dans la propriété IndexDefs. Les fichiers .NDX correctement listés sont automatiquement mis à jour lorsque des données sont ajoutées, modifiées ou supprimées dans la table (qu'un index donné soit ou non utilisé dans la propriété IndexName).

Dans l'exemple ci-dessous, le fichier d'index ANIMALS.MDX est affecté à la propriété IndexFiles du composant table AnimalsTable, et le repère d'index "NAME" est affecté à sa propriété IndexName :



 AnimalsTable.IndexFiles.Add('ANIMALS.MDX');
 AnimalsTable.IndexName := 'NAME';



 AnimalsTable->IndexFiles->Add("ANIMALS.MDX");
 AnimalsTable->IndexName = "NAME";



Une fois le fichier d'index spécifié, les index MDX ou NDX fonctionnent comme n'importe quel autre index. Spécifier un nom d'index trie les données de la table et rend l'index disponible pour les recherches, les portées et (pour les index MDX) les liaisons maître-détail. Voir Utilisation d'ensembles de données de type table pour plus de détail sur l'utilisation d'index.

En utilisant des index .NDX dBASE III PLUS avec les composants TTable, deux considérations particulières sont à prendre en compte. La première est que les fichiers .NDX ne peuvent pas être utilisés comme base pour les liaisons maître-détail. La seconde est que lors de l'activation d'un index .NDX avec la propriété IndexName, vous devez inclure l'extension .NDX dans le nom de l'index dans la valeur de la propriété :



 with Table1 do begin
   IndexName := 'ByState.NDX';
   FindKey(['CA']);
 end;



 Table1->IndexName = "ByState.NDX";
 TVarRec vr = ("NE");
 Table1->FindKey(&vr, 0);



Voir aussi