FireDAC.Comp.Client.TFDTable.LocateEx
Delphi
function LocateEx(const AExpression: String; AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Boolean; override;
function LocateEx(const AKeyFields: String; const AKeyValues: Variant; AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Boolean; override;
C++
virtual bool __fastcall LocateEx(const System::UnicodeString AExpression, Firedac::Comp::Dataset::TFDDataSetLocateOptions AOptions = Firedac::Comp::Dataset::TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
virtual bool __fastcall LocateEx(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, Firedac::Comp::Dataset::TFDDataSetLocateOptions AOptions = Firedac::Comp::Dataset::TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDTable |
Beschreibung
Durchsucht die Datenmenge nach einem angegebenen Datensatz anhand der Feldwerte oder festgelegter Ausdrücke, setzt den Fokus auf diesen Datensatz und gibt dessen Index zurück.
FireDAC.Comp.Client.TFDTable.LocateEx erbt von FireDAC.Comp.DataSet.TFDDataSet.LocateEx. Der folgende Inhalt bezieht sich auf FireDAC.Comp.DataSet.TFDDataSet.LocateEx.
Durchsucht die Datenmenge nach einem angegebenen Datensatz anhand der Feldwerte oder festgelegter Ausdrücke, setzt den Fokus auf diesen Datensatz und gibt dessen Index zurück.
Diese Methode ist überladen:
- Mit der ersten überladenen LocateEx-Methode 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. WennAKeyFields
einen einzelnen Feldnamen enthält, dann istAKeyValues
ein einfacher Wert. WennAKeyFields
mehrere Feldnamen enthält, dann istAKeyValues
ein Varianten-Array, in dem die Einträge den Schlüsselfeldern entsprechen. - Mit der zweiten überladenen LocateEx-Methode durchsuchen Sie die Datenmenge nach einem Datensatz, der dem festgelegten Ausdruck entspricht, und machen diesen Datensatz – sofern er gefunden wird – zum aktuellen.
AExpression
ist ein String, der den festgelegten Ausdruck enthält, anhand dessen die Suche erfolgen soll. Der Ausdruck darf keine Aggregatfunktionen, wieSUM
oderCOUNT
, enthalten, und dessen Auswertung muss True oder False ergeben. FireDAC unterstützt die erweiterte Ausdruckssyntax.
AOptions
ist eine Menge, die optional zusätzliche Suchmodi festlegt:
Option |
Beschreibung |
---|---|
|
Wenn angegeben, dann ignoriert LocateEx die Groß-/Kleinschreibung beim Vergleichen von String-Werten. |
|
Wenn angegeben, dann können in dem Ausdruck unvollständige Strings für den Vergleich von String-Werten angegeben werden. |
|
Wenn angegeben, dann beginnt LocateEx die Suche ab dem nächsten Datensatz in der Datenmenge, ansonsten wird am Anfang begonnen. |
|
Wenn angegeben, dann sucht LocateEx rückwärts nach dem Datensatz, ansonsten erfolgt die Suche vorwärts. |
|
Wenn angegeben, dann führt LocateEx Folgendes nicht aus:
|
|
Wenn angegeben, dann wird FetchAll nicht aufgerufen. Die Suche wird in bereits abgerufenen Datensätzen durchgeführt. |
Wenn ein übereinstimmender Datensatz gefunden wird, dann gibt LocateEx True zurück. Der gefundene Datensatz wird zum aktuellen, wenn lxoCheckOnly
nicht angegeben ist. Die Variable, auf die von ApRecordIndex
gezeigt wird, erhält den Index des gefundenen Datensatzes, wenn ApRecordIndex
nicht nil ist.
Zur Optimierung der Suche kann in der Anwendung ein Clientindex eingerichtet werden. Der Index wird von LocateEx verwendet, wenn die folgenden Bedingungen zutreffen:
- Die Indexfeldliste verfügt als Präfix über
AKeyFields
-Felder. - Der Index wurde mit der Option
soNoCase
erzeugt, undAOptions
enthältlxoCaseInsensitive
. Ansonsten wurde der Index mit der OptionsoNoCase
erzeugt, undAOptions
enthältlxoCaseInsensitive
nicht. - Der Index ist aktiv und der aktuelle Index.
Beispiel
procedure TForm1.BtnFindClick(ASender: TObject);
begin
if not CustTable.LocateEx('COMPANY', 'AMCO', [lxoCaseInsensitive]) then
ShowMessage('Der Kunde der Firma AMCO wurde nicht gefunden');
end;
procedure TForm1.BtnNextClick(ASender: TObject);
begin
if not CustTable.LocateEx('COMPANY', 'AMCO', [lxoCaseInsensitive, lxoFromCurrent]) then
ShowMessage('Der Kunde der Firma AMCO wurde nicht gefunden');
end;