Funktionen DLookup

Gäller för
Access för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

I Access-skrivbordsdatabaser kan du använda funktionen DLookup för att hämta värdet för ett visst fält från en angiven uppsättning poster (en domän). Du kan använda DLookup i en VBA-modul (Visual Basic for Applications), ett makro, ett frågeuttryck eller en beräknad kontroll i ett formulär eller en rapport.

Du kan använda funktionen DLookup till att visa värdet i ett fält som inte finns i datakällan för formuläret eller rapporten. Anta att du har ett formulär som baseras på tabellen Order Details. Formuläret innehåller fälten OrderID, , UnitPriceProductID, Quantityoch Discount . Fältet ProductName finns emellertid i en annan tabell, tabellen Products . Du kan använda DLookup funktionen i en beräknad kontroll och visa ProductName den i samma formulär.

Syntax

DLookup(expr, domain [, criteria])

Funktionen DLookup har följande argument:

argument Beskrivning
expr Obligatoriskt. Ett uttryck där du identifierar det fält vars värde du vill returnera. Det kan vara ett stränguttryck som identifierar ett fält i en tabell eller fråga, eller ett uttryck som utför en beräkning på data i fältet. I exprkan du ta med namnet på ett fält i en tabell, en kontroll i ett formulär, en konstant eller en funktion. Om expr den innehåller en funktion kan den vara inbyggd eller användardefinierad, men inte någon annan mängd- eller SQL mängdfunktion för domäner.
domain Obligatoriskt. Ett stränguttryck som identifierar den uppsättning poster som utgör domänen. Det kan vara ett tabellnamn eller ett frågenamn för en fråga som inte kräver någon parameter.
criteria Valfritt. Ett stränguttryck som används för att begränsa det dataintervall som DLookup funktionen körs på. Motsvarar till exempel criteria ofta WHERE satsen i ett SQL uttryck, utan ordet WHERE. Om du utelämnar criteriautvärderas DLookupexpr funktionen mot hela domänen. Alla fält som ingår i criteria måste också vara ett fält i domain. Annars DLookup returnerar Nullfunktionen .

Kommentarer

Funktionen DLookup returnerar ett enskilt fältvärde baserat på den information som anges i criteria. Även om criteria det är valfritt returnerar funktionen ett slumpmässigt värde i domänen om du inte anger något värde för det DLookup .

Om ingen post uppfyller eller criteriaom domain den inte innehåller några poster DLookup returnerar Nullfunktionen .

Om fler än ett fält uppfyller criteriaDLookup returneras den första förekomsten. Du bör ange villkor som säkerställer att fältvärdet som returneras är DLookup unikt. Du kanske vill använda ett primärnyckelvärde för villkoren, som [EmployeeID] i följande exempel, för att säkerställa att DLookup ett unikt värde returneras:

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

Oavsett om du använder DLookup funktionen i ett makro eller en modul, i ett frågeuttryck eller i en beräknad kontroll bör du konstruera criteria argumentet noggrant så att det utvärderas korrekt i Access.

Du kan använda DLookup funktionen om du vill ange villkoret i en frågas villkorsrad , i ett beräknat fältuttryck i en fråga eller i raden Ändra till i en uppdateringsfråga.

Du kan också använda DLookup funktionen i ett uttryck i en beräknad kontroll i ett formulär eller en rapport om det fält som du behöver visa inte finns i den datakälla som formuläret eller rapporten baseras på. Anta att du har ett Order Details-formulär som baseras på en Order Details-tabell med en textruta ProductID som visar ProductID fältet. Om du vill söka uppåt ProductName från en Products tabell baserat på värdet i textrutan skapar du en till textruta och anger följande uttryck för egenskapen Kontrollkälla :

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

Tips!

  • Även om du kan använda funktionen DSlåUpp för att visa ett värde från ett fält i en sekundär tabell, kan det vara mer effektivt att skapa en fråga som innehåller de fält du behöver från båda tabellerna och att sedan basera formuläret eller rapporten på den frågan.
  • Du kan också använda Uppslagsguiden när du letar efter värden i en extern tabell.

Obs

Ej sparade ändringar av poster i domain tas inte med när du använder den här funktionen. Om du vill DLookup använda de ändrade värdena sparar du först ändringarna genom att klicka på Spara post under Poster på fliken Data och flytta fokus till en annan post eller använda Update metoden.

Exempel

Obs

I exemplen nedan visar vi hur du använder den här funktionen i en Visual Basic for Applications-modul (VBA). Mer information om hur du arbetar med VBA finns i Access VBA-referens.

I följande exempel returneras namninformation från fältet i den CompanyName post som uppfyller criteria. Domänen är en Shippers tabell. Argumentet criteria begränsar den resulterande uppsättningen poster till de poster för vilka ShipperID är lika med 1.

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

I nästa exempel från tabellen Shippers används formulärkontrollen ShipperID för att ange villkor för DLookup funktionen. Referensen till kontrollen omsluts inte inom de citattecken som betecknar strängarna. På så sätt hämtas det aktuella värdet från kontrollen varje gång DLookup .

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

I nästa exempel används en variabel, intSearch, för att hämta värdet.

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