DLookup, functie

Van toepassing op
Access voor Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

In Access-bureaubladdatabases kunt u de DLookup functie gebruiken om de waarde op te vragen van een bepaald veld uit een opgegeven set records (een domein). U kunt in een Visual Basic for Applications-module (VBA) een macro, een query-expressie of een berekend besturingselement in een formulier of rapport gebruiken DLookup .

U kunt de DLookup functie gebruiken om de waarde van een veld weer te geven dat niet is opgenomen in de recordbron van het formulier of rapport. Stel dat u een formulier hebt op basis van een tabel Orderinformatie. In het formulier worden de OrderIDvelden , ProductID, UnitPrice, Quantity, en Discount weergegeven. Het ProductName veld bevindt zich echter in een andere tabel, namelijk de Products tabel. U kunt de DLookup functie gebruiken in een berekend besturingselement dat op hetzelfde formulier wordt weergegeven ProductName .

Syntaxis

DLookup(expr, domain [, criteria])

De DLookup functie heeft deze argumenten:

Argument Beschrijving
expr Vereist. Een expressie die het veld aangeeft waarvan u de waarde wilt opvragen. Dit kan een tekenreeksexpressie zijn die een veld in een tabel of query identificeert, of een expressie die een berekening uitvoert op de gegevens in dat veld. In exprkunt u de naam van een veld in een tabel, een besturingselement van een formulier, een constante of een functie opnemen. Als expr deze functie bevat, kan deze een ingebouwde functie zijn of door een gebruiker zijn gedefinieerd, maar niet nog een statistische SQL of statistische domeinfunctie.
domain Vereist. Een tekenreeksexpressie die de set records aangeeft waaruit het domein bestaat. Dit kan de naam van een tabel zijn of de naam van een query waarvoor geen parameter nodig is.
criteria Optioneel. Een tekenreeksexpressie die wordt gebruikt om het gegevensbereik te beperken waarop de DLookup functie wordt uitgevoerd. Het is bijvoorbeeld criteria vaak gelijk aan de WHERE component in een SQL expressie, zonder het woord WHERE. Als u dit weglaatcriteria, wordt expr de DLookup functie voor het hele domein geëvalueerd. Alle velden die worden opgenomen in criteria moeten ook een veld zijn in domain. Anders wordt het resultaat van Nullde DLookup functie .

Opmerkingen

Met de DLookup functie wordt de waarde van één veld geretourneerd op basis van de gegevens die zijn opgegeven in criteria. Hoewel criteria de functie optioneel is, retourneert de DLookup functie een willekeurige waarde in het domein als u hiervoor geen waarde opgeeft.

Als geen enkele record voldoet criteriaaan , of als domain deze geen records bevat, geeft de functie als resultaat DLookupNull.

Als aan meer dan één veld wordt voldaan criteria, wordt met de DLookup functie het eerste veld geretourneerd. U moet criteria opgeven die ervoor zorgen dat de veldwaarde die wordt geretourneerd DLookup , uniek is. U kunt een primaire-sleutelwaarde gebruiken voor de criteria, zoals [EmployeeID] in het volgende voorbeeld, om ervoor te zorgen dat DLookup een unieke waarde wordt geretourneerd:

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

Of u de DLookup functie nu gebruikt in een macro of module, een query-expressie of een berekend besturingselement, stel het criteria argument zorgvuldig samen, zodat het correct kan worden geëvalueerd.

U kunt de DLookup functie gebruiken om criteria op te geven in de rij Criteria van een query, binnen een expressie van een berekend veld in een query of in de rij Wijzigen in in een bijwerkquery.

U kunt de DLookup functie ook gebruiken in een expressie in een berekend besturingselement in een formulier of rapport als het veld dat u wilt weergeven niet in de recordbron staat waarop het formulier of rapport is gebaseerd. Stel dat u een formulier Orderinformatie hebt dat is gebaseerd op een tabel Orderinformatie, met daarin een tekstvak met de naam ProductID dat het ProductID veld wordt weergegeven. Als u een Products tabel wilt opzoeken ProductName op basis van de waarde in het tekstvak, maakt u een ander tekstvak en stelt u de eigenschap ControlSource in op de volgende expressie:

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

Tips

  • Hoewel u met DLookup een waarde uit een veld in een refererende tabel kunt weergeven, kan het efficiënter zijn om een query te maken met de velden die u uit beide tabellen nodig hebt en vervolgens het formulier of rapport op die query te baseren.
  • U kunt ook de wizard Opzoeken gebruiken om waarden in een refererende tabel te vinden.

Opmerking

Recordwijzigingen die domain niet zijn opgeslagen, worden niet meegenomen in deze functie. Als u de gewijzigde waarden wilt DLookup gebruiken, slaat u de wijzigingen eerst op. Klik hiervoor onder Records op het tabblad Gegevens op Record opslaan, verplaats de focus naar een andere record of gebruik de Update methode.

Voorbeeld

Opmerking

In de volgende voorbeelden wordt het gebruik van deze functie in een VBA-module (Visual Basic for Applications) toegelicht. Zie de naslaginformatie over VBA voor Access voor meer informatie over het werken met VBA.

In het volgende voorbeeld worden naamgegevens opgehaald uit het CompanyName veld van de record waaraan wordt voldaan criteria. Het domein is een Shippers tabel. Het criteria argument beperkt de resulterende set records tot die waarvan ShipperID gelijk is 1aan .

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

In het volgende voorbeeld met de Shippers tabel wordt het formulierbesturingselement ShipperID gebruikt om criteria voor de DLookup functie op te geven. De verwijzing naar het besturingselement staat niet tussen de aanhalingstekens waarmee de tekenreeksen worden aangegeven. Dit is nodig om ervoor te zorgen dat na elke uitvoering DLookup de huidige waarde van het besturingselement wordt opgehaald.

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

In het volgende voorbeeld wordt een variabele gebruikt, intSearchom de waarde op te halen.

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