I Access-skrivbordsdatabaser kan du använda DLookup funktionen 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 DLookup funktionen för att visa värdet för 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. I formuläret visas fälten OrderID, ProductID, UnitPrice, Quantityoch Discount . Fältet finns dock ProductName i en annan tabell, tabellen Products . Du kan använda DLookup funktionen i en beräknad kontroll för att visa ProductName 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 en funktion ingår kan den vara inbyggd eller användardefinierad, men inte någon annan mängdfunktion för domäner SQL . |
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 dataområde som DLookup funktionen körs på. Till exempel criteria motsvarar WHERE ofta satsen i ett SQL uttryck, utan ordet WHERE. Om du utelämnar criteriaDLookup utvärderas expr 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 enda fältvärde baserat på den information som anges i criteria. Även om criteria det är valfritt, om du inte anger ett värde för det, DLookup returnerar funktionen ett slumpmässigt värde i domänen.
Om ingen post uppfyller criteria, eller om domain den DLookup inte innehåller några poster, returnerar Nullfunktionen .
Om fler än ett fält uppfyller criteriaDLookup returnerar funktionen den första förekomsten. Du bör ange villkor som säkerställer att fältvärdet som returneras av DLookup är unikt. Du kanske vill använda ett primärnyckelvärde för villkoren, till exempel [EmployeeID] i följande exempel, för att säkerställa att DLookup returnerar ett unikt värde:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Oavsett om du använder DLookup funktionen i ett makro eller en modul, ett frågeuttryck eller en beräknad kontroll måste du skapa criteria argumentet noggrant så att Access utvärderar det korrekt.
Du kan använda DLookup funktionen för att ange villkor på raden Villkor för en fråga, i ett beräknat fältuttryck i en fråga eller på raden Uppdatera 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 fältet som du behöver visa inte finns i datakällan som formuläret eller rapporten baseras på. Anta till exempel att du har ett orderinformationsformulär baserat på en orderinformationstabell med en textruta som heter ProductID att fältet ProductID visas. Om du vill slå upp ProductName från en Products tabell baserat på värdet i textrutan skapar du en annan textruta och ställer in egenskapen Kontrollkälla på följande uttryck:
=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ärtabell kan det vara mer effektivt att skapa en fråga som innehåller de fält som du behöver från båda tabellerna och 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 domain poster i tas inte med när du använder den här funktionen. Om du vill DLookup använda ändrade värden sparar du först ändringarna genom att klicka på Spara post under Poster på fliken Data , 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 CompanyName för den post som uppfyller criteria. Domänen är en Shippers tabell. Argumentet criteria begränsar den resulterande uppsättningen poster till de poster som ShipperID är 1lika med .
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
I nästa exempel från Shippers tabellen används formulärkontrollen ShipperID för att ange villkor för DLookup funktionen. Referensen till kontrollen tas inte med i citattecknen som betecknar strängarna. Det säkerställer att varje gång DLookup körs får Access det aktuella värdet från kontrollen.
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)