Suchen von Datensätzen (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Arbeiten mit Datenmengen (FireDAC)


FireDAC enthält Methoden zum Suchen eines bestimmen Datensatzes in der Datenmenge.

Allgemeine Informationen

Alle FireDAC-Datenmengen stellen Methoden zum Suchen eines Datensatzes in einem lokalen Datenmengendatensatz-Zwischenspeicher bereit. Die Datensatzsuche kann abhängig von der aktuellen Sortierung optimiert werden.

Standardsuche

Die FireDAC-Datenmengen stellen mehrere Optionen zum Suchen eines Datensatzes oder Nachschlagen eines Wertes für einen bestimmten Schlüssel bereit. Diese Methoden verwenden den aktuellen Datenmengenindex, wenn dieser für den Methodenaufruf geeignet ist.

  • Mit der Methode Locate können Sie einen Datensatz für die angegebenen Schlüsselwerte suchen:
 FDQuery1.IndexFieldNames := 'ORDERID';
 if FDQuery1.Locate('ORDERID', 10150, []) then
   ShowMessage('Order is found')
 else
   ShowMessage('Order is not found');
  • Mit der Methode Lookup können Sie einen Wert für die angegebenen Schlüsselwerte nachschlagen.

Erweiterte Suche

Die FireDAC-Datenmengen stellen erweiterte Methoden zum Suchen eines Datensatzes bereit. Diese Methoden verwenden den aktuellen Datenmengenindex, wenn dieser für den Methodenaufruf geeignet ist.

  • Die Methode LocateEx ist mit der Methode Locate identisch, umfasst aber mehr Optionen, wie z. B. Vorwärts- oder Rückwärtssuche, Suche ab dem Beginn oder ab dem aktuellen Datensatz, Suche mit Textprädikaten (Ausdrücken). Zum Beispiel:
 if FDQuery1.LocateEx('Price >= 1000 and Price <= 2000', []) then
   ShowMessage('Order is found')
 else
   ShowMessage('Order is not found');
  • Die Methode LookupEx ist mit der Methode Lookup identisch, umfasst aber ähnliche Optionen wie die Methode LocateEx.

Suchen mit einem Filter

Diese Vorgehensweise zum Suchen eines Datensatzes wurde in FireDAC aus Kompatibilitätsgründen mit BDE-Komponenten eingefügt. Die Methode LocateEx ersetzt diese Vorgehensweise. Bei dieser Vorgehensweise werden die folgenden Methoden verwendet:

  • FindFirst – sucht den ersten Datensatz, der dem Prädikat entspricht.
  • FindNext – sucht den nächsten Datensatz nach dem aktuellen, der dem Prädikat entspricht.
  • FindPrior – sucht den vorherigen Datensatz nach dem aktuellen, der dem Prädikat entspricht.
  • FindLast – sucht den letzten Datensatz, der dem Prädikat entspricht.

Um die Suche zu beginnen, muss das Prädikat in der Anwendung in der Eigenschaft Filter als boolescher Ausdruck angegeben werden. Diese Methode kann nicht zum Suchen eines Datensatzes in einer gefilterten Datenmenge verwendet werden. Zudem ist der Filter nicht aktiviert, und er kann nur zum Suchen eines Datensatzes verwendet werden. Zum Beispiel:

 FDQuery1.Filter := 'Price >= 1000 and Price <= 2000';
 if FDQuery1.FindFirst then
   ShowMessage('Found !');
 ...
 if FDQuery1.FindNext then
   ShowMessage('Found !');

Suchen mit einem Index und einem Schlüsselwert

Diese Vorgehensweise zum Suchen eines Datensatzes wurde in FireDAC aus Kompatibilitätsgründen mit BDE-Komponenten eingefügt. Bei dieser Vorgehensweise werden die folgenden Methoden verwendet:

  • SetKey – setzt die Datenmenge in den Modus dsSetKey, damit Sie die Indexfeldwerte angeben können.
  • GotoKey – sucht nach einem übereinstimmenden Datensatz anhand der Indexfeldwerte, die nach einem Aufruf der Methode SetKey angegeben wurden.
  • GotoNearest – sucht nach einem übereinstimmenden oder ähnlichen Datensatz anhand der Indexfeldwerte, die nach einem Aufruf der Methode SetKey angegeben wurden.
  • FindKey – sucht nach einem übereinstimmenden Datensatz anhand der angegebenen Indexfeldwerte.
  • FindNearest – sucht nach einem übereinstimmenden oder ähnlichen Datensatz anhand der angegebenen Indexfeldwerte.

Vor Aufruf dieser Methoden muss der aktuelle Index festgelegt sein. Zum Beispiel:

 FDQuery1.IndexFieldNames := 'ORDERID';
 FDQuery1.SetKey;
 FDQuery1.FieldByName('ORDERID').AsInteger := 10150;
 if FDQuery1.GotoKey then
   ShowMessage('Order is found')
 else
   ShowMessage('Order is not found');

Weitere Optionen

Die meisten Suchmethoden geben True zurück, wenn ein Datensatz gefunden wurde. Alternativ kann in der Anwendung die Eigenschaft Found der Datenmenge überprüft werden.

Beachten Sie, dass FireDAC die Suche für Felder mit dem Typ fkCalculated und fkLookup nicht unterstützt. Aber die Anwendung kann für Suchoperationen die fkInternalCalc- und fkAggregate-Felder verwenden.

Siehe auch