FireDAC.Comp.DataSet.TFDDataSet.Locate

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function Locate(const AKeyFields: string; const AKeyValues: Variant;
AOptions: TLocateOptions = []): Boolean; override;

C++

virtual bool __fastcall Locate(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, Data::Db::TLocateOptions AOptions = Data::Db::TLocateOptions() );

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet


Beschreibung

Durchsucht die Datenmenge nach einem Datensatz mit den angegebenen Feldwerten und macht diesen Datensatz zum aktuellen.

Mit Locate durchsuchen Sie die Datenmenge nach einem Datensatz mit den angegebenen Feldwerten und machen diesen Datensatz – sofern er gefunden wird – zum aktuellen. 

AKeyFields ist eine durch Semikolon getrennte Liste mit Namen von Feldern, die durchsucht werden sollen. 

AKeyValues ist eine Variante mit den Werten, die mit den Schlüsselfeldern verglichen werden sollen. Wenn AKeyFields einen einzelnen Feldnamen enthält, dann ist AKeyValues ein einfacher Wert. Wenn AKeyFields mehrere Feldnamen enthält, dann ist AKeyValues ein Varianten-Array, in dem die Einträge den Schlüsselfeldern entsprechen. 

AOptions ist eine Menge von Suchmodi für String-Felder. Wenn AOptions den Wert loCaseInsensitive enthält, dann ignoriert Locate die Groß-/Kleinschreibung beim Vergleichen der Felder. Wenn AOptions den Wert loPartialKey enthält, dann kann der Parameter AKeyValues Teilstrings enthalten. 

Wenn ein übereinstimmender Datensatz gefunden wird, dann wird dieser Datensatz zum aktuellen und Locate gibt True zurück. 

Zur Optimierung der Suche kann in der Anwendung ein Clientindex eingerichtet werden. Der Index wird von Locate verwendet, wenn die folgenden Bedingungen zutreffen:

  • Die Indexfeldliste verfügt als Präfix über AKeyFields-Felder.
  • Der Index wurde mit der Option soNoCase erstellt, und AOptions enthält loCaseInsensitive, oder der Index wurde ohne soNoCase erstellt, und AOptions enthält loCaseInsensitive nicht.
  • Der Index ist aktiv und der aktuelle Index.

Beispiel

CustTable.IndexFieldNames := 'ID';
if CustTable.Locate('ID', 1001, []) then
  CustTable.Delete
else
  ShowMessage('The customer with ID=1001 is not found');

Siehe auch