FireDAC.Comp.DataSet.TFDDataSet.LookupEx

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function LookupEx(const AKeyFields: string; const AKeyValues: Variant;
const AResultFields: string; AOptions: TFDDataSetLocateOptions = [];
ApRecordIndex: PInteger = nil): Variant; overload; virtual;
function LookupEx(const AExpression, AResultFields: string;
AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Variant; overload; virtual;

C++

virtual System::Variant __fastcall LookupEx(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, const System::UnicodeString AResultFields, TFDDataSetLocateOptions AOptions = TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
virtual System::Variant __fastcall LookupEx(const System::UnicodeString AExpression, const System::UnicodeString AResultFields, TFDDataSetLocateOptions AOptions = TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;

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 einer Menge von angegebenen Schlüsselfeldwerten oder nach einem Datensatz anhand eines festgelegten Ausdrucks und gibt die resultierenden Feldwerte zurück.

Diese Methode ist überladen:

  • Mit der ersten überladenen LookupEx-Methode durchsuchen Sie eine Datenmenge nach einem Datensatz mit den angegebenen Schlüsselfeldwerten.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.
  • Mit der zweiten überladenen LookupEx-Methode durchsuchen Sie eine Datenmenge nach einem Datensatz, für den ein festgelegter Ausdruck zu True ausgewertet wird.AExpression ist ein String, der den festgelegten Ausdruck enthält, anhand dessen die Suche erfolgen soll. Der Ausdruck darf keine Aggregatfunktionen, wie SUM und COUNT, enthalten, und dessen Auswertung muss True oder False ergeben. FireDAC unterstützt die erweiterte Ausdruckssyntax.

Wenn ein übereinstimmender Datensatz gefunden wird, gibt LookupEx ein Varianten-Array mit den Werten aus den in AResultFields angegebenen Feldern zurück. Andernfalls wird null zurückgegeben. 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 der Clientindex eingerichtet werden. Der Index wird von LookupEx verwendet, wenn die folgenden Bedingungen zutreffen:

  • Die Indexfeldliste verfügt als Präfix über AKeyFields-Felder.
  • Der Index wurde ohne die Option soNoCase erzeugt.
  • Der Index ist aktiv und der aktuelle Index.

AOptions ist eine Menge, die optional zusätzliche Suchmodi festlegt:

Option

Beschreibung
lxoCaseInsensitive

Wenn angegeben, dann ignoriert LookupEx die Groß-/Kleinschreibung beim Vergleichen von String-Werten.

lxoPartialKey

Wenn angegeben, dann kann AKeyValues unvollständige Strings für den Vergleich von String-Werten angeben.

lxoFromCurrent

Wenn angegeben, dann beginnt LookupEx die Suche ab dem nächsten Datensatz in der Datenmenge, ansonsten wird am Anfang begonnen.

lxoBackward

Wenn angegeben, dann sucht LookupEx rückwärts nach dem Datensatz, ansonsten erfolgt die Suche vorwärts.

lxoCheckOnly

Wenn angegeben, dann führt LookupEx Folgendes nicht aus:
  • Beenden des Bearbeitungsmodus, sofern er aktiv war.

lxoNoFetchAll

Wenn angegeben, dann wird FetchAll nicht aufgerufen. Deshalb wird die Suche in den bereits abgerufenen Datensätzen durchgeführt.

Beispiel

procedure TForm1.Button1Click(Sender: TObject);  
var    
  V: Variant;    
  C: Integer;    
  A: String;  
begin    
  V := FDQuery1.LookupEx('Firma = ''Blue Sports'' und Staat = ''OR''', 'CustNo;Addr1', [lxoCaseInsensitive]);    
  if not VarIsNull(V) then begin      
    C := V[0];     
    A := V[1];     
    ShowMessage(IntToStr(C) + #13#10 + A);    
  end   
  else      
    ShowMessage('Der Datensatz wurde nicht gefunden!');  
end;

Siehe auch