Funktionen DLookup

I Access-skrivbordsdatabaser kan du använda funktionen DSlåUpp för att hämta värdet för ett givet fält från en specifik uppsättning poster (en domän). Du kan använda funktionen DSlåUpp i VBA-moduler (Visual Basic for Applications), makron, frågeuttryck samt i en beräknad kontroll i formulär och rapporter.

Obs!: Den här artikeln gäller inte för Access-webbprogram.

Du kan använda funktionen DSlåUpp om du vill 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. I formuläret finns fälten OrderID, ProductID, UnitPrice, Quantity och Discount. Fältet ProductName finns emellertid i en annan tabell, nämligen i tabellen Products. Då kan du använda funktionen DSlåUpp i en beräknad kontroll för att visa ProductName i samma formulär.

Syntax

DSlåUpp( uttr; domän [; villkor] )

Syntaxen till funktionen DSlåUpp har följande argument:

Argument

Beskrivning

uttr

Obligatoriskt. Ett uttryck där du identifierar det fält vars värde du vill returnera. Det kan vara ett stränguttryck där du identifierar ett fält i en tabell eller en fråga, eller vara ett uttryck där du utför en beräkning på data i fältet. I uttr (uttryck, expr) kan du ta med namnet på ett fält i en tabell, en kontroll i ett formulär, en konstant eller en funktion. Om uttr innehåller en funktion, kan det vara en inbyggd eller användardefinierad funktion, men inte någon annan mängdfunktion för domäner eller en SQL-mängdfunktion.

domän

Obligatoriskt. Ett stränguttryck där du 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.

villkor

Valfritt. Ett stränguttryck som används för att begränsa det dataintervall som DSlåUpp körs på. Till exempel motsvarar villkor ofta DÄR-villkoret (WHERE) i ett SQL-uttryck, utan ordet DÄR. Om villkor utelämnas, utvärderas uttr mot hela domänen av DSlåUpp-funktionen. Alla fält som finns i villkor måste också vara fält i domän – annars returneras ett null-värde av DSlåUpp.

Kommentarer

Med funktionen DSlåUpp returneras ett enda fältvärde, utifrån den information som anges i villkor. Trots att villkor är ett valfritt argument kommer DSlåUpp att returnera ett slumpmässigt värde i domänen om du inte anger ett värde för villkor.

Om ingen post motsvarar villkor, eller om domän inte innehåller någon post, returneras ett null-värde av DSlåUpp.

Om fler än ett fält motsvarar villkor returneras den första förekomsten av DSlåUpp. Du bör ange villkor på ett sådant sätt att det fältvärde som returneras av DSlåUpp är unikt. Du kan med fördel använda ett primärnyckel-värde för villkoren, som [EmployeeID] i exemplet nedan, så att ett unikt värde returneras av DSlåUpp:

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

Oavsett om du använder funktionen DSlåUpp i ett makro eller en modul, i ett frågeuttryck eller i en beräknad kontroll, måste du vara noga när du skapar argumentet villkor så att det utvärderas på rätt sätt.

Du kan använda DSlåUpp 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 funktionen DSlåUpp i ett uttryck i en beräknad kontroll i ett formulär eller en rapport, om det fält som du måste visa inte finns i formulärets/rapportens datakälla. Anta att du har ett Order Details-formulär som baseras på en Order Details-tabell med en textruta med namnet ProductID där fältet ProductID visas. Om du vill slå upp ProductName från tabellen Products baserat på värdet i textrutan, kan du skapa ytterligare en textruta och ange följande uttryck i Kontrollkälla-egenskapen:

=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 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 domän tas inte med när du använder den här funktionen. Om du vill att funktionen DSlåUpp ska baseras på ändrade värden, måste du först spara ändringarna genom att klicka på Spara post under Poster på fliken Data och flytta fokus till en annan post – eller använda metoden Uppdatera.

Exempel

Obs!: I exemplen nedan visar vi hur du använder den här funktionen i en Visual Basic for Applications-modul (VBA). Om du vill läsa mer om hur man använder VBA, kan du välja Info för utvecklare i listrutan bredvid Sök och sedan skriva en eller flera söktermer i sökrutan.

I följande exempel returneras namninformationen från fältet CompanyName i den post som motsvarar villkor. Domänen är en Shippers-tabell. Genom argumentet villkor begränsas uppsättningen poster till de poster där ShipperID är lika med 1.

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

I nästa exempel från tabellen Shippers tas villkoret för funktionen DSlåUpp från formulärkontrollen ShipperID. Observera att referensen till kontrollen inte omsluts med de citattecken som betecknar strängarna. Detta säkerställer att det aktuella värdet hämtas från kontrollen varje gång som DSlåUpp anropas.

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)
Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×