FireDAC.Comp.DataSet.TFDDataSet.Locate
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() );
Inhaltsverzeichnis
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, undAOptions
enthältloCaseInsensitive
, oder der Index wurde ohnesoNoCase
erstellt, undAOptions
enthältloCaseInsensitive
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');