Bde.DBTables.TBDEDataSet.Lookup

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function Lookup(const KeyFields: string; const KeyValues: Variant;  const ResultFields: string): Variant; override;

C++

virtual System::Variant __fastcall Lookup(const System::UnicodeString KeyFields, const System::Variant &KeyValues, const System::UnicodeString ResultFields);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
Bde.DBTables.pas
Bde.DBTables.hpp
Bde.DBTables TBDEDataSet


Beschreibung

Ruft Feldwerte aus einem Datensatz ab, der den angegebenen Suchwerten entspricht.

Mit Lookup können Sie in einer Datenmenge nach einem Datensatz suchen, der in den angegebenen Felder die angegebenen Werte enthält, und andere Feldwerte aus diesem Datensatz ermitteln. Im Gegensatz zu anderen Suchmethoden für Datensätze führt Lookup die Suche durch, ohne den Datensatzzeiger der Datenmenge zu verschieben. Daher eignet sich Look besonders für Datenvalidierungen eines Datensatzes, der sich gerade im Bearbeiten- oder Einfügemodus befindet.

KeyFields ist ein String, der den (bzw. die) Feldnamen enthält, für den die Suche ausgeführt werden soll. Wenn die suche auf mehreren Feldern basiert, enthält KeyFields die durch Semikolons getrennte Liste der Feldnamen.

KeyValues ist ein variantes Array mit den Werten, die in den in KeyFields festgelegten Feldern gesucht werden sollen. Um nach mehreren Werten zu suchen, übergeben Sie in KeyValues ein variantes Array als Argument oder verwenden die Routine VarArrayOf, um während der Ausführung ein variantes Array zu erzeugen. Die Suchwerte müssen in derselben Reihenfolge wie die Felder in KeyFields angegeben werden. Der erste Wert wird für das erste Feld in KeyFields, der zweite Wert für das zweite Feld usw. verwendet.

ResultFields in ein String mit den Feldnamen, deren Werte ermittelt werden sollen. Wenn Werte aus mehreren Feldern abgerufen werden sollen, enthält ResultFields eine durch Semikolons getrennte Liste der Feldnamen.

Lookup gibt ein variantes Array mit den Werten der in ResultFields angegebenen Felder zurück.

Lookup Verwendet bei der Suche nach Datensätzen die schnellste Methode. Sind die Suchfelder in KeyFields indiziert, wird der Index verwendet. Andernfalls wird für die Suche ein Filter erstellt.

Im folgenden Beispiel wird mit der Methode Lookup die Paradox-Beispieltabelle Customer durchsucht. Die Suche basiert auf zwei Feldern: Company und State und auf den beiden Werten "Blue Sports" und "OR". Damit die Suche erfolgreich ist, muss ein Datensatz vorhanden sein, dessen Feld Company den Wert "Blue Sports" UND dessen Feld State den Wert "OR" enthält. Wenn eines der beiden Kriterien nicht zutrifft ist die Suche ergebnislos (in der Beispieltabelle ist dieser Datensatz enthalten, daher wird die Suche ein Ergebnis liefern). Die Methode Lookup liefert die Werte der Felder CustNo und Addr1 zurück. Wenn die Suche erfolglos ist, gibt die Funktion VarType, die dem zurückgelieferten varianten Array zugewiesen wurde, varNull zurück.


procedure TForm1.Button1Click(Sender: TObject);
var
V : Variant;
C: Integer;
A: String;
begin
V := Table1.Lookup('Company;State',
VarArrayOf(['Blue Sports', 'OR']),
'CustNo;Addr1');
if not (VarType(V) in [varNull]) then begin
C := V[0];
A := V[1];
ShowMessage(IntToStr(C) + #10 + A);
end
else
ShowMessage('Search unsuccessful!');
end;


int C;
AnsiString A;
Variant V;
V = Table1->Lookup("Company;State",
VarArrayOf(OPENARRAY(Variant, ("Blue Sports","OR"))),
"CustNo;Addr1");
if !(VarType(V) == varNull)
{
C = V[0];
A = V[1];
ShowMessage(IntToStr(C) + #10 + A);
}
else
ShowMessage("Search unsuccessful!");


Siehe auch