DLookup (Funktion)

Gilt für
Access für Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

In Access-Desktopdatenbanken können Sie die DLookup Funktion verwenden, um den Wert eines bestimmten Felds aus einem angegebenen Satz von Datensätzen (einer Domäne) abzurufen. Sie können in einem Visual Basic for Applications (VBA)-Modul ein Makro, einen Abfrageausdruck oder ein berechnetes Steuerelement in einem Formular oder Bericht verwendenDLookup.

Sie können die DLookup Funktion verwenden, um den Wert eines Felds anzuzeigen, das sich nicht in der Datensatzquelle Ihres Formulars oder Berichts befindet. Angenommen, Sie verfügen über ein Formular, das auf einer Tabelle "Bestelldetails" basiert. Das Formular zeigt die OrderIDFelder , ProductID, UnitPrice, Quantityund Discount an. Das ProductName Feld befindet sich jedoch in einer anderen Tabelle, der Products Tabelle. Sie können die DLookup Funktion in einem berechneten Steuerelement verwenden, um im selben Formular anzuzeigen ProductName .

Syntax

DLookup(expr, domain [, criteria])

Die DLookup Funktion weist die folgenden Argumente auf:

Argument Beschreibung
expr Erforderlich. Ein Ausdruck, der das Feld angibt, dessen Wert zurückgegeben werden soll. Ein Zeichenfolgenausdruck, der ein Feld in einer Tabelle oder Abfrage identifiziert, oder ein Ausdruck, der eine Berechnung der Daten in diesem Feld durchführt. In exprkönnen Sie den Namen eines Felds in eine Tabelle, eines Steuerelements in ein Formular, einer Konstante oder einer Funktion einfügen. Wenn expr eine Funktion enthalten ist, kann diese integriert oder benutzerdefiniert sein, aber keine andere Domänenaggregat- oder SQL Aggregatfunktion.
domain Erforderlich. Ein Zeichenfolgenausdruck, der die Gruppe von Datensätzen identifiziert, aus denen die Domäne besteht. Es kann sich um einen Tabellennamen oder einen Abfragenamen für eine Abfrage handeln, die keinen Parameter erfordert.
criteria Optional. Ein Zeichenfolgenausdruck, der zum Einschränken des Datenbereichs verwendet wird, für den die DLookup Funktion ausgeführt wird. Entspricht z. B. criteria häufig der WHERE Klausel in einem SQL Ausdruck ohne das Wort WHERE. Wenn Sie den Befehl criteriaweglassen, wird expr die DLookup Funktion anhand der gesamten Domäne ausgewertet. Jedes Feld, das in criteria enthalten ist, muss auch ein Feld in domainsein. Andernfalls gibt Nulldie DLookup Funktion zurück.

Hinweise

Die DLookup Funktion gibt einen einzelnen Feldwert basierend auf den in angegebenen Informationen criteriazurück. Obwohl criteria sie optional ist, gibt die DLookup Funktion, wenn Sie keinen Wert dafür angeben, einen zufälligen Wert in der Domäne zurück.

Wenn kein Datensatz erfüllt criteriaist, oder wenn domain kein Datensatz enthält, gibt die DLookup Funktion zurück Null.

Wenn mehrere Felder aufeinandertreffen criteria, gibt die DLookup Funktion das erste Vorkommen zurück. Sie sollten Kriterien angeben, die sicherstellen, dass der von zurückgegebene DLookup Feldwert eindeutig ist. Sie können einen Primärschlüsselwert für Ihre Kriterien verwenden, z. B [EmployeeID] . im folgenden Beispiel, um sicherzustellen, dass DLookup ein eindeutiger Wert zurückgegeben wird:

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
    "[EmployeeID] = 1")

Unabhängig davon, ob Sie die Funktion in einem Makro oder Modul, in einem Abfrageausdruck oder in einem berechneten Steuerelement verwenden, müssen Sie das DLookupcriteria Argument sorgfältig erstellen, damit Access es richtig auswertet.

Sie können die DLookup Funktion verwenden, um Kriterien in der Zeile Kriterien einer Abfrage, innerhalb eines Ausdrucks eines berechneten Felds in einer Abfrage oder in der Zeile "Aktualisieren bis " in einer Aktualisierungsabfrage anzugeben.

Sie können die DLookup Funktion auch in einem Ausdruck in einem berechneten Steuerelement in einem Formular oder Bericht verwenden, wenn sich das Feld, das Sie anzeigen möchten, nicht in der Datensatzquelle befindet, auf der das Formular oder der Bericht basiert. Angenommen, Sie verfügen über ein Bestelldetailsformular, das auf einer Tabelle "Bestelldetails" mit einem Textfeld basiert, in dem das ProductID Feld angezeigt wirdProductID. Wenn Sie anhand des Werts im Textfeld in einer Products Tabelle nach oben ProductName suchen möchten, erstellen Sie ein weiteres Textfeld, und legen Sie als ControlSource-Eigenschaft den folgenden Ausdruck fest:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

Tipps

  • Sie können mit der DomWert-Funktion zwar einen Wert aus einem Feld in einer fremden Tabelle anzeigen, es kann aber effizienter sein, eine Abfrage zu erstellen, die die benötigten Felder aus beiden Tabellen enthält, und dann Ihr Formular oder Ihren Bericht auf diese Abfrage zu stützen.
  • Sie können auch den Nachschlage-Assistenten verwenden, um nach Werten in einer Fremdtabelle zu suchen.

Hinweis

Nicht gespeicherte Änderungen an Datensätzen in domain werden bei Verwendung dieser Funktion nicht eingeschlossen. Wenn Sie die geänderten Werte verwenden möchtenDLookup, speichern Sie die Änderungen zuerst, indem Sie auf der Registerkarte Daten unter "Daten" auf "Datensatz speichern" klicken, den Fokus auf einen anderen Datensatz verschieben oder die Update Methode verwenden.

Beispiel

Hinweis

Die folgenden Beispiele zeigen die Verwendung dieser Funktion in einem VBA-Modul (Visual Basic for Applications). Weitere Informationen zum Arbeiten mit VBA finden Sie unter Access VBA-Referenz.

Das folgende Beispiel gibt Namensinformationen aus dem CompanyName Feld des Datensatzes zurück, für das die Eigenschaft erfüllt criteriaist. Die Domäne ist eine Shippers Tabelle. Das criteria Argument schränkt die resultierende Menge von Datensätzen auf diejenigen ein, für die ShipperID gleich 1ist.

Dim varX As Variant
varX = DLookup("[CompanyName]", _
    "Shippers", "[ShipperID] = 1")

Im nächsten Beispiel aus der Shippers Tabelle wird das Formularsteuerelement ShipperID verwendet, um Kriterien für die DLookup Funktion bereitzustellen. Der Verweis auf das Steuerelement ist nicht in den Anführungszeichen enthalten, die die Zeichenfolgen kennzeichnen. Dadurch wird sichergestellt, dass Access bei jeder DLookup Ausführung den aktuellen Wert aus dem Steuerelement abruft.

Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
    "[ShipperID] = " & Forms!Shippers!ShipperID)

Im nächsten Beispiel wird eine Variable verwendet, intSearch, um den Wert abzurufen.

Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
    "[ShipperID] = " & intSearch)