I Access skrivebordsdatabaser kan du bruke DLookup-funksjonen til å hente verdien for et bestemt felt fra et angitt sett med poster (en domene ). Bruk DLookup-funksjonen i en VBA-modul (Visual Basic for Applications), en makro, et spørreuttrykk eller en beregnet kontroll på et skjema eller en rapport.
Du kan bruke DLookup-funksjonen til å vise verdien i et felt som ikke er i postkilden for skjemaet eller rapporten. Anta for eksempel at du har et skjema basert på en bestillingsdetaljtabell. Skjemaet viser OrdreID-, ProductID-, Enhetspris-, Antall- og Rabatt-feltene. ProductName-feltet er imidlertid i en annen tabell, Produkter-tabellen. Du kan bruke DLookup-funksjon i en beregnet kontroll for å vise ProductName i samme skjema.
Syntaks
DLookup( uttr, domene [, vilkår] )
Syntaksen for DLookup-funksjonen har disse argumentene:
Argument |
Beskrivelse |
---|---|
uttr |
Obligatorisk. Et uttrykk som identifiserer feltet med verdien du vil returnere. Det kan være et strenguttrykk som identifiserer et felt i en tabell eller spørring, eller det kan være et uttrykk som utfører beregninger på data i det feltet. I uttr kan du ta med navnet på et felt i en tabell, en kontroll på et skjema, en konstant eller en funksjon. Hvis uttr inneholder en funksjon, kan den være innebygd eller brukerdefinert, men ikke en annen domenemengde- eller SQL-mengdefunksjon. |
domene |
Obligatorisk. En streng som identifiserer settet med poster som utgjør domenet. Det kan være enten et tabellnavn eller et spørringsnavn for en spørring som ikke krever en parameter. |
vilkår |
Valgfritt. Et strenguttrykk som brukes til å begrense dataområdet der DLookup-funksjonen utføres. For eksempel tilsvarer vilkår ofte WHERE-setningen i et SQL-uttrykk uten ordet HVOR. Hvis vilkår er utelatt, evaluerer DLookup-funksjonen uttr mot hele domenet. Alle felter som er inkludert i vilkår, må også være et felt i domene, ellers returnerer DLookup-funksjonen en Null. |
Merknader
DLookup-funksjonen returnerer én enkel feltverdi basert på informasjonen som er angitt i vilkår. Selv om vilkår er et valgfritt argument, returnerer DLookup-funksjonen en tilfeldig verdi i domenet hvis du ikke oppgir en verdi for vilkår.
Hvis ingen poster oppfyller vilkåret eller hvis domene ikke inneholder noen poster, returnerer DLookup-funksjonen en Null.
Hvis mer enn ett felt oppfyller vilkår, returnerer DLookup-funksjonen den første forekomsten. Du bør angi vilkår som sikrer at feltverdien som returneres av DLookup-funksjonen, er unik. Det kan hende at du vil bruke en primærnøkkel-verdi for vilkåret, som [EmployeeID] i følgende eksempel, for å sikre at DLookup-funksjonen returnerer en unik verdi:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Enten du bruker DLookup-funksjonen i en makro, en modul, et spørreuttrykk eller en beregnet kontroll, må du konstruere vilkår-argumentet forsiktig for å sikre at det evalueres riktig.
Du kan bruke DLookup-funksjonen til å angi vilkår i Vilkår-raden i en spørring, i et beregnet feltutrykk i en spørring eller i Oppdater til-raden i en opppdateringsspørring.
Du kan også bruke DLookup-funksjonen i et uttrykk i en beregnet kontroll i et skjema eller en rapport hvis feltet du trenger å vise, ikke er i postkilden som skjemaet eller rapporten er basert på. Anta for eksempel at du har et bestillingsdetaljskjema basert på en bestillingsdetaljtabell med en tekstboks kalt ProductID som viser ProductID-feltet. Hvis du vil slå opp ProductName fra en produkttabell basert på verdien i tekstboksen, kan du opprette en annen tekstboks og angi Kontrollkilde-egenskapen til følgende uttrykk:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Tips
-
Selv om du kan bruke DLookup-funksjonen til å vise en verdi fra et felt i en sekundærtabell, kan det være mer effektivt å opprette en spørring som inneholder feltene du trenger, fra begge tabellene og deretter basere skjemaet eller rapporten på denne spørringen.
-
Du kan også bruke oppslagsveiviseren for å finne verdier i en sekundærtabell.
Obs!: Ulagrede endringer til poster i domene er ikke inkludert når du bruker denne funksjonen. Hvis du vil at DLookup-funksjonen skal være basert på de endrede verdiene, må du først lagre endringene ved å klikke Lagre post under Poster på Data-fanen, som flytter fokus til en annen post, eller ved hjelp av Oppdater-metoden.
Eksempel
Obs!: I eksemplene nedenfor vises bruken av denne funksjonen i en VBA-modul (Visual Basic for Applications). Hvis du vil ha mer informasjon om hvordan du arbeider med VBA, kan du se Referanse for Access VBA.
Følgende eksempel returnerer navninformasjon fra FirmaNavn-feltet til posten som oppfyller vilkår. Domenet er en Speditører-tabell. Vilkår-argumentet begrenser det resulterende settet med poster til dem der SpeditørID er lik 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
Det neste eksempelet fra speditørtabellen bruker skjemakontrollen SpeditørID for å gi vilkår for DLookup-funksjonen. Vær oppmerksom på at referansen til kontrollen ikke er inkludert i anførselstegn som angir strenger. Dette sikrer at hver gang DLookup-funksjonen kalles, henter Access gjeldende verdi fra kontrollen.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & Forms!Shippers!ShipperID)
Det neste eksemplet bruker en variabel, intSearch, for å få verdien.
Dim intSearch As Integer
Dim varX As Variant intSearch = 1 varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & intSearch)