Exécution d'une recherche avec les méthodes Goto

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'index pour chercher des enregistrements

Pour exécuter une recherche au moyen des méthodes Goto

  1. Spécifiez l'index à utiliser pour la recherche. C'est le même index qui trie les enregistrements dans l'ensemble de données. Pour spécifier l'index, utilisez les propriétés IndexName ou IndexFieldNames.
  2. Ouvrez l'ensemble de données.
  3. Mettez l'ensemble de données client à l'état dsSetKey en appelant la méthode SetKey.
  4. Spécifiez la ou les valeurs à rechercher dans la propriété Fields. Fields est un objet TFields, qui gère une liste indexée de composants champ auxquels vous pouvez accéder en spécifiant les numéros ordinaux correspondant à chaque colonne. Le premier numéro de colonne d'un ensemble de données est 0.
  5. Recherchez et accédez au premier enregistrement trouvé avec GotoKey ou GotoNearest.

Par exemple, le code ci-dessous, quand il est rattaché à l'événement OnClick d'un bouton, utilise la méthode GotoKey pour passer au premier enregistrement dont la valeur du premier champ de l'index correspond exactement au texte de la zone de saisie :


procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
  ClientDataSet1.SetKey;
  ClientDataSet1.Fields[0].AsString := Edit1.Text;
  if not ClientDataSet1.GotoKey then
    ShowMessage('Enregistrement non trouvé');
end;


void __fastcall TSearchDemo::SearchExactClick(TObject *Sender)
{
  ClientDataSet1->SetKey();
  ClientDataSet1->Fields->Fields[0]->AsString = Edit1->Text;
  if (!ClientDataSet1->GotoKey())
    ShowMessage("Enregistrement non trouvé");
}


GotoNearest est similaire. Elle recherche la première occurrence correspondant à une valeur de champ partielle. Elle ne peut être utilisée que pour des champs chaîne. Par exemple,


Table1.SetKey;
Table1.Fields[0].AsString := 'Sm';
Table1.GotoNearest;


Table1->SetKey();
Table1->Fields->Fields[0]->AsString = "Sm";
Table1->GotoNearest();


S'il existe un enregistrement dont la valeur du premier champ indexé commence par les lettres "Sm", le curseur se positionne dessus. Sinon, la position du curseur ne change pas et GotoNearest renvoie False.

Voir aussi