Die Methode Lookup

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenmengen durchsuchen


Die Methode Lookup sucht nach dem ersten Datensatz, der mit den angegebenen Suchkriterien übereinstimmt. Sobald ein passender Datensatz gefunden wird, erzwingt Lookup die Neuberechnung aller berechneten Felder und der mit der Datenmenge verbundenen Lookup-Felder. Anschließend werden ein oder mehrere Felder des übereinstimmenden Datensatzes zurückgegeben. Lookup positioniert nicht den Cursor neu, sondern liefert nur Werte zurück.

In der einfachsten Form werden folgende Informationen an Lookup übergeben: der Name des zu durchsuchenden Feldes, der zu suchende Feldwert und das Feld bzw. die Felder, deren Werte zurückgegeben werden sollen. Im folgenden Quelltextbeispiel wird in der Datenmenge CustTable nach dem ersten Datensatz gesucht, in dem im Feld Company der Wert "Professional Divers, Ltd." steht. Die Methode gibt dann den Namen der Firma, einen Ansprechpartner und eine Telefonnummer zurück:



 var
   LookupResults: Variant;
 begin
   LookupResults := CustTable.Lookup('Company', 'Professional Divers, Ltd.',     'Company;Contact; Phone');
 end;



 Variant LookupResults = CustTable->Lookup("Company", "Professional Divers, Ltd",
     "Company;Contact;Phone");



Die Methode Lookup gibt die Werte der angegebenen Felder aus dem ersten, mit den Suchkriterien übereinstimmenden Datensatz aus. Die Rückgabewerte sind vom Typ Variant. Wenn mehrere Ergebniswerte angefordert wurden, gibt Lookup ein Array mit Variant-Werten zurück. Existieren keine übereinstimmenden Datensätze, liefert Lookup eine Null-Variante zurück.

Die Leistungsfähigkeit von Lookup zeigt sich bei der Suche in mehreren Spalten unter Angabe verschiedener Suchwerte. Wenn Sie in einem Suchstring mehrere Felder oder Ergebnisfelder angeben, müssen Sie die einzelnen Felder in den String-Elementen durch Semikolons voneinander trennen.

Da es sich bei den Suchwerten um Varianten handelt, müssen Sie bei der Übergabe mehrerer Werte entweder ein Varianten-Array als Argument übergeben (beispielsweise die Rückgabewerte der Methode Lookup), oder Sie müssen das Varianten-Array mit der Funktion VarArrayOf programmieren. Der folgende Quelltext zeigt eine Suche mit der Methode Lookup in mehreren Feldern:



 var
   LookupResults: Variant;
 begin
 with CustTable do
   LookupResults := Lookup('Company; City', VarArrayOf(['Sight Diver', 'Christiansted']), 'Company; Addr1; Addr2; State; Zip');
 end;



 Variant LookupResults;
 Variant locvalues[2];
 Variant v;
 locvalues[0] = Variant("Sight Diver");
 locvalues[1] = Variant("Kato Paphos");
 LookupResults = CustTable->Lookup("Company;City", VarArrayOf(locvalues, 1),
                   "Company;Addr1;Addr2;State;Zip");
 // setze die Ergebnisse nun in eine globale Stringliste (die woanders erzeugt wurde)
 pFieldValues->Clear();
 for (int i = 0; i < 5; i++) // Lookup-Aufruf forderte 5 Felder an
 {
 v = LookupResults.GetElement(i);
 if (v.IsNull())
 pFieldValues->Add("");
 else
 pFieldValues->Add(v);
 }



Wie auch bei Locate wird beim Arbeiten mit der Methode Lookup das schnellste verfügbare Verfahren zum Auffinden der passenden Datensätze verwendet. Wenn die zu durchsuchenden Spalten indiziert sind, wird der Index verwendet.

Siehe auch