Bde.DBTables.TTable.FindKey
Delphi
function FindKey(const KeyValues: array of const): Boolean;
C++
bool __fastcall FindKey(const System::TVarRec *KeyValues, const int KeyValues_High);
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | Bde.DBTables.pas Bde.DBTables.hpp |
Bde.DBTables | TTable |
Description
Recherche un enregistrement dont les champs contiennent les valeurs spécifiées.
La méthode FindKey permet de rechercher un enregistrement spécifique d'un ensemble de données. KeyValues contient un tableau délimité par des virgules de valeurs de champ, appelé une clé. Chaque valeur de la clé peut être un littéral, une variable ou la valeur nil (Delphi) ou NULL (C++). Si le nombre de valeurs transmises dans KeyValues est inférieur au nombre de colonnes de l'index utilisé pour la recherche, les valeurs manquantes sont supposées être nulles. KeyValues_Size spécifie l'index de la dernière valeur de KeyValues (une de moins que le nombre total de valeurs fournies). Dans l'instruction ci-dessous, la méthode FindKey est utilisée pour trouver la ligne de la table ayant dans le champ index la valeur "'Princess Island SCUBA".
Table1.FindKey(['Princess Island SCUBA']);
TVarRec vr = ("Princess Island SCUBA");
Table1->FindKey(&vr, 0);
Remarque : Dans le code C++, les valeurs de recherche peuvent être transmises à FindKey en utilisant une construction TVarRec (comme ci-dessus) ou une construction ARRAYOFCONST. L'exemple ci-dessous effectue la même recherche que l'exemple précédent, mais en utilisant ARRAYOFCONST.
Table1->FindKey(ARRAYOFCONST(("Princess Island SCUBA")));
Pour les tables Paradox et dBASE, la clé doit toujours être un index, qui peut être spécifié dans la propriété IndexName. Si IndexName est vide, FindKey utilise l'index primaire de la table. Notez que FindKey ne fonctionne pas avec des index d'expression dBASE. Utilisez de préférence la méthode GotoKey ou GotoNearest.
Pour les tables SQL, la clé peut correspondre à un index spécifié dans IndexName ou à une liste de noms de champ dans la propriété IndexFieldNames.
Si la recherche réussit, FindKey positionne le curseur sur l'enregistrement correspondant et renvoie true. Sinon, le curseur n'est pas déplacé et FindKey renvoie false.