Funktionen DLookup

I Access-skrivebordsdatabaser kan du bruge funktionen DLookup til at hente værdien af et bestemt felt fra en bestemt sæt poster (en domæne). Brug funktionen DLookup i et VBA-modul (Visual Basic for Applications), en makro, et forespørgselsudtryk eller et beregnet kontrolelement i en formular eller rapport.

Bemærk: Denne artikel gælder ikke for Access-webapps.

Du kan bruge funktionen DLookup til at få vist værdien af et felt, der ikke findes i posttypen for din formular eller rapport. Antag f.eks., at du har en formular, som er baseret på tabellen Ordredetaljer. I formularen vises felterne Ordre-id, Produkt-id, Enhedspris, Antal og Rabat. Men feltet Produktnavn findes i en anden tabel, nemlig tabellen Produkter. Du kunne bruge funktionen DLookup i et beregnet kontrolelement for at få vist Produktnavn i den samme formular.

Syntaks

DLookup( udtryk, domæne [, kriterier] )

Syntaksen til funktionen DLookup indeholder følgende argumenter:

Argument

Beskrivelse

udtryk

Påkrævet. Et udtryk, der identificerer det felt, hvis værdi du vil returnere. Det kan være et strengudtryk, der identificerer et felt i en tabel eller forespørgsel, eller det kan være et udtryk, der udfører en beregning af data i det pågældende felt. I udtryk kan du medtage navnet på et felt i en tabel, et kontrolelement i en formular, en konstant eller en funktion. Hvis udtryk indeholder en funktion, kan den enten være indbygget eller brugerdefineret, men det kan ikke være en anden domæneaggregeringsfunktion eller en SQL-aggregeringsfunktion.

domæne

Påkrævet. Et strengudtryk, der identificerer det sæt af poster, der udgør domænet. Det kan være et tabelnavn eller et forespørgselsnavn til en forespørgsel, der ikke kræver en parameter.

kriterier

Valgfrit. Et strengudtryk, der bruges til at begrænse det dataområde, hvor funktionen DLookup udføres. Eksempelvis svarer kriterier ofte til WHERE-delsætningen i et SQL-udtryk uden ordet WHERE. Hvis kriterier udelades, evaluerer funktionen DLookupudtryk imod hele domænet. Alle felter, der er inkluderet i kriterier, skal også være felter i domæne. Ellers returnerer funktionen DLookup en Null-værdi.

Bemærkninger

Funktionen DLookup returnerer værdien for et enkelt felt baseret på de oplysninger, der er angivet i kriterier. Selvom kriterier er et valgfrit argument, så returnerer DLookup en tilfældig værdi i domænet, hvis du ikke angiver en værdi for kriterier.

Hvis der ikke er nogen poster, der opfylder kriterier, eller hvis domæne ikke indeholder nogen poster, returnerer funktionen DLookup en Null-værdi.

Hvis mere end ét felt opfylder kriterier, returnerer funktionen DLookup den første forekomst. Du bør angive kriterier, som sikrer, at den feltværdi, der returneres af funktionen DLookup, er entydig. Du kan evt. bruge en primær nøgle-værdi for dine kriterier, f.eks. [EmployeeID] som i det følgende eksempel for at sikre, at funktionen DLookup returnerer en entydig værdi:

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

Uanset om du bruger funktionen DLookup i en makro eller et modul, et forespørgselsudtryk eller et beregnet kontrolelement, skal du konstruere argumentet kriterier omhyggeligt for at sikre, at det evalueres korrekt.

Du kan bruge funktionen DLookup til at angive kriterier i rækken Kriterier i en forespørgsel, i et udtryk for et beregnet felt i en forespørgsel eller i rækken Opdater til i en opdater forespørgsel.

Du kan også bruge funktionen DLookup i et udtryk i et beregnet kontrolelement i en formular eller rapport, hvis det felt, du vil vise, ikke findes i den postkilde, som din formular eller rapport er baseret på. Antag f.eks., at du har en formular af typen Ordredetaljer baseret på tabellen Ordredetaljer med et tekstfelt kaldet Produkt-id, som viser feltet Produkt-id. Hvis du vil slå Produktnavn op i en tabel med produkter baseret på værdien i tekstfeltet, kan du oprette et nyt tekstfelt og angive egenskaben Kontrolelementkilde til følgende udtryk:

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

Tip!

  • Selvom du kan bruge funktionen DLookup til at vise en værdi fra et felt i en fremmed tabel, kan det være mere effektivt at oprette en forespørgsel, der indeholder de felter, du skal bruge, fra begge tabeller og derefter basere din formular eller rapport på den forespørgsel.

  • Du kan også bruge guiden Opslag til at finde værdier i en fremmed tabel.

Bemærk: Ikke-gemte ændringer i poster i domæne inkluderes ikke, når du bruger denne funktion. Hvis du vil have, at funktionen DLookup skal være baseret på de ændrede værdier, skal du først gemme ændringerne ved at klikke på Gem post under Poster på fanen Data, flytte fokus til en post eller ved hjælp af metoden Opdater.

Eksempel

Bemærk: Følgende eksempler demonstrerer brugen af denne funktion i et VBA-modul (Visual Basic for Applications). Hvis du vil have mere at vide om at arbejde med VBA, skal du vælge Udviklerreference på rullelisten ud for Søg og skrive ét eller flere ord i søgefeltet.

I følgende eksempel returneres navneoplysninger fra feltet Firmanavn i den post, der opfylder kriterier. Domænet er en tabel over speditører. Argumentet kriterier begrænser resultatsættet af poster til dem, hvor Speditør-id er lig med 1.

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

Det næste eksempel fra speditørtabellen anvender formularkontrolelementet Speditør-id til at angive kriterier for funktionen DLookup. Bemærk, at referencen til kontrolelementet ikke medtages i de anførselstegn, der angiver strengene. Det sikrer, at hver gang funktionen DLookup kaldes, vil Access hente den aktuelle værdi fra kontrolelementet.

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

I det næste eksempel anvendes der en variabel, intSearch, til at hente værdien.

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

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×