Application.DLookup-Methode (Access)

Verwenden Sie die DLookup-Funktion , um den Wert eines bestimmten Felds aus einem angegebenen Satz von Datensätzen (einer Domäne) abzurufen.

Syntax

Ausdruck. DLookup (Expr, Domain, Criteria)

expression Eine Variable, die ein Application-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
Expr Erforderlich String Ein Ausdruck, der das Feld identifiziert, dessen Wert zurückgegeben werden soll. Es kann ein Zeichenfolgenausdruck sein, der ein Feld in einer Tabelle oder Abfrage identifiziert, oder es kann ein Ausdruck sein, der eine Berechnung mit Daten in diesem Feld durchführt. In expr können Sie den Namen eines Felds in einer Tabelle, ein Steuerelement in einem Formular, eine Konstante oder eine Funktion einschließen. Wenn expr eine Funktion enthält, kann sie entweder integriert oder benutzerdefinierte sein, aber keine andere Domänenaggregat- oder SQL-Aggregatfunktion.
Domäne Erforderlich String Ein Zeichenfolgenausdruck, der die Gruppe der Datensätze angibt, die die Domäne bilden. Es kann sich dabei um einen Tabellennamen oder einen Abfragenamen für eine Abfrage handeln, die keinen Parameter benötigt.
Criteria Optional Variant Ein Zeichenfolgenausdruck, den Sie optional angeben können, um den Datenbereich einzuschränken, für den die DLookup-Funktion ausgeführt wird. Beispielsweise ist criteria oft äquivalent mit der WHERE-Klausel in einem SQL-Ausdruck, ohne das Wort WHERE. Wird das Argument criteria nicht angegeben, so berechnet DLookup das Argument expr für die gesamte Domäne. Jedes Feld, das im Argument criteria enthalten ist, muss auch ein Feld des Arguments domain sein, sonst gibt DLookup den Wert Null zurück.

Rückgabewert

Variant

Bemerkungen

Verwenden Sie die DLookup-Funktion , um den Wert eines Felds anzuzeigen, das sich nicht in der Datensatzquelle für Ihr Formular oder Ihren Bericht befindet. Angenommen, Sie haben ein Formular auf der Basis der Tabelle "Order Details" (Bestelldetails). Das Formular zeigt die Felder OrderID, ProductID, UnitPrice, Quantity und Discount an. Das Feld ProductName befindet sich jedoch in einer anderen Tabelle, der Tabelle Products. Sie können die DLookup-Funktion in einem berechneten Steuerelement verwenden, um den ProductName auf demselben Formular anzuzeigen.

Die DLookup-Funktion gibt einen einzelnen Feldwert zurück, der auf den in Kriterien angegebenen Informationen basiert. Obwohl criteria ein optionales Argument ist, gibt die DLookup-Funktion einen zufälligen Wert in der Domäne zurück, wenn Sie keinen Wert für Kriterien angeben.

Wenn kein Datensatz die Kriterien erfüllt oder die Domäne keine Datensätze enthält, gibt die DLookup-Funktioneinen Null-Wert zurück.

Wenn mehrere Felder die criteria erfüllen, gibt die DLookup-Funktion das erste dieser Felder zurück. Geben Sie Kriterien an, die sicherstellen, dass der von DLookup zurückgegebene Feldwert eindeutig ist. Sie können einen Primärschlüsselwert für Ihre Kriterien verwenden, z [EmployeeID] . B. im folgenden Beispiel, um sicherzustellen, dass die DLookup-Funktion einen eindeutigen Wert zurückgibt:

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

Unabhängig davon, ob Sie die DLookup-Funktion in einem Makro oder Modul, einem Abfrageausdruck oder einem berechneten Steuerelement verwenden, müssen Sie das Argument criteria sorgfältig erstellen, um sicherzustellen, dass es ordnungsgemäß ausgewertet wird.

Verwenden Sie die DLookup-Funktion , um Kriterien in der Zeile Kriterien einer Abfrage, innerhalb eines berechneten Feldausdrucks in einer Abfrage oder in der Zeile Aktualisieren auf in einer Updateabfrage anzugeben.

Sie können die DLookup-Funktion auch in einem Ausdruck in einem berechneten Steuerelement eines Formulars oder Berichts verwenden, wenn das Feld, das Sie anzeigen möchten, sich nicht in der Datenquelle befindet, auf der Ihr Formular oder Bericht basiert. Angenommen, Sie verfügen über ein Formular "Bestelldetails", das auf einer Tabelle "Bestelldetails" mit einem Textfeld namens "ProductID" basiert, in dem das Feld "ProductID " angezeigt wird. Um ProductName aus einer Products-Tabelle basierend auf dem Wert im Textfeld nachzuschlagen, können Sie ein weiteres Textfeld erstellen und dessen ControlSource-Eigenschaft auf den folgenden Ausdruck festlegen:

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

Tipp

  • Obwohl Sie die DLookup-Funktion auch zum Anzeigen eines Wertes aus einem Feld in einer Fremdtabelle verwenden können, ist es u. U. effizienter, eine Abfrage zu erstellen, die die benötigten Felder aus beiden Tabellen enthält, und Ihrem Formular oder Bericht dann diese Abfrage zugrunde zu legen.
  • Sie können zum Suchen nach Werten in einer Fremdtabelle auch den Nachschlage-Assistenten verwenden.

Beispiel

Im folgenden Beispiel werden Namensinformationen aus dem Feld CompanyName des Datensatzes zurückgegeben, der die Kriterien erfüllt. Die Domäne ist die Tabelle "Versandfirmen". Das Criteria-Argument schränkt den resultierenden Satz von Datensätzen auf diejenigen ein, für die ShipperID gleich 1 ist.

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

Im nächsten Beispiel aus der Tabelle Shippers wird das Formularsteuerelement ShipperID verwendet, um Kriterien für die DLookup-Funktion bereitzustellen. Note that the reference to the control isn't included in the quotation marks that denote the strings. This ensures that each time the DLookup function is called, Microsoft Access will obtain the current value from the control.

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

Im nächsten Beispiel wird die Variable verwendet, intSearchum den Wert abzurufen.

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

Die folgenden Beispiele zeigen, wie Sie verschiedene Arten von Kriterien mit der Funktion DLookup verwenden.

    ' ***************************
    ' Typical Use
    ' Numerical values. Replace "number" with the number to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = number")

    ' Strings.
    ' Numerical values. Replace "string" with the string to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria]= 'string'")

    ' Dates. Replace "date" with the string to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria]= #date#")
    ' ***************************

    ' ***************************
    ' Referring to a control on a form
    ' Numerical values
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)

    ' Strings
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")

    ' Dates
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
    ' ***************************

    ' ***************************
    ' Combinations
    ' Multiple types of criteria
    variable = DLookup("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
             & " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
            & " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
    
    ' Use two fields from a single record.
    variable = DLookup("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
            
    ' Expressions
    variable = DLookup("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
    
    ' Control Structures
    variable = DLookup("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
    ' ***************************
```The following example shows how to use **DLookUp** in a Do Loop. It demonstrates how to build the Criteria string on each pass through the loop.

```vba
' The loop verifies data from an input data set, in this case Operating System names, 
' against those contained in a Master List.

Do Until I1 > NRec1
    ' An apostrophe is concatenated at the beginning and at the end of a datum referenced by "rs1!OS", 
    ' which is then concatenated to build the entire criteria string.
    Str_2 = "'" & rs1!OS & "'"
    Str_1 = "[OS] = " & Str_2
    
    J1 = DLookup("[ID]", "tbl_81_Operating_Systems_Master_List", Str_1)
    
    If IsNull(J1) = True Then
        ' If an OS name is not found, then a flag is set and the name of the unknown OS is output to a table.
        rs3.AddNew
        rs3.OS = rs1!OS
        rs3.Update
        Err_Fl = False

    End If

    rs1.MoveNext
    I1 = I1 + 1

Loop

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.