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 van een bepaald veld op te halen uit een opgegeven set records (een domein). U kunt gebruiken 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 DLookup functie gebruiken om de waarde weer te geven van een veld dat zich niet in de recordbron voor uw formulier of rapport bevindt. Stel dat u een formulier hebt op basis van een tabel Orderinformatie. In het formulier worden de OrderIDvelden , ProductID, UnitPrice, Quantityen Discount weergegeven. Het veld bevindt zich ProductName echter in een andere tabel, de Products tabel. U kunt de DLookup functie in een berekend besturingselement gebruiken om in hetzelfde formulier weer te geven 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. Het kan een tekenreeksexpressie zijn die een veld in een tabel of query identificeert, of het kan een expressie zijn waarmee een berekening wordt uitgevoerd op gegevens in dat veld. In exprkunt u de naam van een veld in een tabel, een besturingselement in een formulier, een constante of een functie opnemen. Als expr een functie is opgenomen, kan deze zijn ingebouwd of door de gebruiker gedefinieerd, maar niet een andere statistische domein- of SQL statistische functie.
domain Vereist. Een tekenreeksexpressie die de set records identificeert waaruit het domein bestaat. Dit kan een tabelnaam of een querynaam zijn voor een query waarvoor geen parameter is vereist.
criteria Optioneel. Een tekenreeksexpressie die wordt gebruikt om het bereik van gegevens te beperken waarop de DLookup functie wordt uitgevoerd. Is bijvoorbeeld criteria vaak gelijk aan de WHERE component in een SQL expressie, zonder het woord WHERE. Als u weglaatcriteria, evalueert expr de DLookup functie op basis van het hele domein. Elk veld dat is opgenomen in criteria , moet ook een veld zijn in domain. Anders retourneert Nullde DLookup functie .

Opmerkingen

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

Als geen enkele record voldoet aan criteriaof als domain er geen records zijn, retourneert Nullde DLookup functie .

Als aan meer dan één veld wordt voldaan criteria, retourneert de DLookup functie het eerste exemplaar. U moet criteria opgeven die ervoor zorgen dat de veldwaarde die wordt geretourneerd door DLookup uniek is. Mogelijk wilt u een primaire sleutelwaarde gebruiken voor uw 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, het argument moet zorgvuldig worden samengesteld criteria , zodat het correct wordt geëvalueerd.

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

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 zich niet in de recordbron bevindt waarop uw formulier of rapport is gebaseerd. Stel dat u een formulier Ordergegevens hebt op basis van een tabel Ordergegevens met een tekstvak met de naam ProductID waarin het ProductID veld wordt weergegeven. Als u wilt opzoeken ProductName vanuit een Products tabel 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 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 domain worden niet opgenomen wanneer u deze functie gebruikt. Als u de gewijzigde waarden wilt DLookup gebruiken, slaat u de wijzigingen eerst op door te klikken op Record opslaan onder Records op het tabblad Gegevens , de focus naar een andere record te verplaatsen of door de Update methode 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.

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

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

In het volgende voorbeeld uit de Shippers tabel wordt het formulierbesturingselement ShipperID gebruikt om criteria voor de DLookup functie op te geven. De verwijzing naar het besturingselement wordt niet opgenomen tussen de aanhalingstekens die de tekenreeksen aandukken. Dit zorgt ervoor dat telkens DLookup wanneer wordt uitgevoerd, Access de huidige waarde uit het besturingselement haalt.

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)