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, intSearch
um 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.