Eine Suche mit Goto-Methoden ausführen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datensätze über Indizes suchen


Zum Ausführen der Suche mit den Goto-Methoden sind die folgenden Schritte erforderlich:

  1. Geben Sie den Index an, anhand dessen die Suche durchgeführt werden soll. Dabei muss es sich um denselben Index handeln, anhand dessen die Datensätze in der Datenmenge sortiert werden. Geben Sie den Index über eine der Eigenschaften IndexName oder IndexFieldNames an.
  2. Öffnen Sie die Datenmenge.
  3. Rufen Sie die Methode SetKey auf, um die Datenmenge in den Status dsSetKey zu versetzen.
  4. Geben Sie in der Eigenschaft Fields die Werte an, nach denen gesucht werden soll. Fields ist ein TFields-Objekt, das eine indizierte Liste der Feldkomponenten verwaltet, auf die Sie über Ordinalzahlen zugreifen, die den einzelnen Spalten entsprechen. Die erste Spalte in der Datenmenge hat die Nummer 0.
  5. Suchen Sie mit GotoKey oder GotoNearest nach dem ersten übereinstimmenden Datensatz und bewegen Sie den Cursor dorthin.

Beispiel: Der folgende Quelltext, der dem OnClick-Ereignis einer Schaltfläche zugeordnet ist, verwendet die Methode GotoKey, um den Cursor zum ersten Datensatz zu setzen, in dem der Wert im ersten Indexfeld exakt dem Text in einem Texteingabefeld entspricht:


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


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


GotoNearest verhält sich ganz ähnlich. Diese Methode sucht nach der besten Übereinstimmung mit einem bestimmten Feldwert. Sie kann nur für Stringfelder verwendet werden. Beispiel:


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


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


Wenn ein Datensatz vorhanden ist, in dessen erstem indizierten Feld die ersten beiden Zeichen "Sm" lauten, wird der Cursor zu diesem Datensatz bewegt. Andernfalls ändert sich die Cursorposition nicht, und die Methode GotoNearest gibt den Wert False zurück.

Siehe auch