DLookup, functie

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

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

U kunt de functie DLookup 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. Het formulier bevat de velden Order-id, Product-id, Prijs per eenheid, Hoeveelheid en Korting. Het veld Productnaam staat echter in een andere tabel, namelijk de tabel Producten. U kunt dan de functie DLookup gebruiken in een berekend besturingselement om het veld Productnaam op hetzelfde formulier weer te geven.

Syntaxis

DLookup(expr, domein [, criteria] )

De syntaxis van de functie DLookup bevat de volgende argumenten:

Argument Beschrijving
expr Vereist. Een expressie die het veld aangeeft waarvan u de waarde wilt opvragen. Dit kan een tekenreeksexpressie zijn waarmee een veld in een tabel of query wordt geïdentificeerd, of het kan een expressie zijn waarmee een berekening wordt uitgevoerd op gegevens in dat veld. In expr kunt u de naam van een veld in een tabel, een besturingselement op een formulier, een constante of een functie opnemen. Als expr een functie bevat, kan deze zijn ingebouwd of door de gebruiker gedefinieerd, maar niet een andere domeinaggregatie of statistische SQL-functie.
domein Vereist. Een tekenreeksexpressie waarmee de set records wordt aangegeven 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 functie DLookup wordt uitgevoerd. Criteria is bijvoorbeeld vaak gelijk aan de WHERE-component in een SQL-expressie, zonder het woord WHERE. Als criteria worden weggelaten, evalueert de functie DLookupexpr op basis van het hele domein. Elk veld dat is opgenomen in criteria , moet ook een veld in het domein zijn; anders retourneert de functie DLookup een Null.

Opmerkingen

De functie DLookup retourneert één veldwaarde op basis van de informatie die is opgegeven in criteria. Hoewel criteria een optioneel argument is, retourneert de functie DLookup een willekeurige waarde in het domein als u geen waarde opgeeft voor criteria.

Als geen enkele record voldoet aan criteria of als het domein geen records bevat, retourneert de functie DLookup een Null.

Als meer dan één veld voldoet aan criteria, retourneert de functie DLookup het eerste exemplaar. Geef criteria op die ervoor zorgen dat de veldwaarde die het resultaat is van DLookup uniek is. U kunt een primaire sleutelwaarde gebruiken voor uw criteria, zoals [EmployeeID] in het volgende voorbeeld, om ervoor te zorgen dat de functie DLookup een unieke waarde retourneert:

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

Of u nu de functie DLookup gebruikt in een macro of module, een query-expressie of een berekend besturingselement, u moet het criteriumargument zorgvuldig samenstellen om ervoor te zorgen dat het correct wordt geëvalueerd.

U kunt de functie DLookup gebruiken om criteria op te geven in de rij Criteria van een query, in een expressie voor een berekend veld in een query of in de rij Bijwerken naar in een updatequery.

U kunt DLookup 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 van het formulier of rapport. Stel dat u een formulier Orderinformatie hebt dat is gebaseerd op een gelijknamige tabel met een tekstvak Product-id dat overeenkomt met het veld Product-id. Als u Productnaam wilt opzoeken in een producttabel op basis van de waarde in het tekstvak, kunt u een ander tekstvak maken en de eigenschap Besturingselementbron hiervan instellen op de volgende expressie:

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

Tips

  • Hoewel u de functie DLookup kunt gebruiken om een waarde uit een veld in een refererende tabel weer te geven, is het mogelijk efficiënter om een query te maken die de velden bevat die u nodig hebt uit beide tabellen en vervolgens uw formulier of rapport op die query te baseren.
  • U kunt ook de wizard Opzoeken gebruiken om waarden in een refererende tabel te vinden.

Opmerking

Niet-opgeslagen wijzigingen in records in domein worden niet opgenomen wanneer u deze functie gebruikt. Als u wilt dat de functie DLookup is gebaseerd op de gewijzigde waarden, moet u de wijzigingen eerst opslaan door te klikken op Record opslaan onder Records op het tabblad Gegevens , de focus naar een andere record te verplaatsen of door de updatemethode te gebruiken.

Voorbeeld

Opmerking

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

Het volgende voorbeeld retourneert naamgegevens uit het veld CompanyName van de record die voldoet aan criteria. Het domein is een tabel Shippers. Het argument criteria beperkt de resulterende set records tot de records waarvoor ShipperID gelijk is aan 1.

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

In het volgende voorbeeld met de tabel Shippers wordt het formulierbesturingselement ShipperID gebruikt om criteria door te geven aan DLookup. De verwijzing naar het besturingselement staat niet tussen de aanhalingstekens waarmee de tekenreeksen worden aangegeven. Dit is nodig om ervoor te zorgen dat bij elke aanroep van DLookup de huidige waarde van het besturingselement wordt opgehaald in Access.

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

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

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