DLookup-funktio

Käytetään kohteeseen
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access-työpöytätietokannoissa voit käyttää DLookup-funktiota tietyn kentän arvon hakemiseen määritetystä tietuejoukosta (toimialue). Käytä DLookup-funktiota Visual Basic for Applications (VBA) -moduulissa, makrossa, kyselylausekkeessa tai lomakkeen tai raportin lasketussa ohjausobjektissa.

Käyttämällä DLookup-funktiota voit näyttää sellaisen kentän arvon, jota ei ole lomakkeen tai raportin tietuelähteessä. Oletetaan esimerkiksi, että sinulla on Order Details (Tilaustiedot) -taulukkoon perustuva lomake. Lomakkeessa näkyvät OrderID (TilauksenTunnus)-, ProductID (Tuotetunnus)-, UnitPrice (Yksikköhinta)-, Quantity (Määrä)- ja Discount (Alennus) -kentät. ProductName (TuotteenNimi) -kenttä on kuitenkin toisessa taulukossa eli Products (Tuotteet) -taulukossa. Käyttämällä DLookup-funktiota lasketussa ohjausobjektissa voit näyttää ProductName-kentän samassa lomakkeessa.

Syntaksi

DLookup(lauseke, toimialue [, ehdot] )

DLookup-funktion syntaksilla on seuraavat argumentit:

Argumentti Kuvaus
lauseke Pakollinen. Lauseke, joka määrittää kentän, jonka arvon haluat palauttaa. Se voi olla merkkijonolauseke, joka tunnistaa taulukon tai kyselyn kentän, tai se voi olla lauseke, joka suorittaa laskutoimituksen kyseisen kentän tiedoille. Lausekkeessa voit sisällyttää taulukon kentän nimen, lomakkeen ohjausobjektin, vakion tai funktion. Jos lauseke sisältää funktion, se voi olla joko sisäinen tai käyttäjän määrittämä, mutta ei toinen toimialueen kooste tai SQL-koostefunktio.
ryhmä Pakollinen. Merkkijonolauseke, joka määrittää ryhmän muodostavan tietuejoukon. Kyseessä voi olla taulukon nimi tai sellaisen kyselyn nimi, joka ei vaadi parametria.
ehdot Valinnainen. Merkkijonolauseke, jonka avulla rajoitetaan niiden tietojen aluetta, joihin DLookup-funktiota käytetään. Esimerkiksi ehdot vastaa usein SQL-lausekkeen WHERE-lausetta ilman sanaa WHERE. Jos ehto jätetään pois, DLookup-funktio laskee lausekkeen arvon koko ryhmän perusteella. Kentän, joka sisältyy ehtoihin, on oltava myös ryhmän kenttä; muussa tapauksessa DLookup-funktio palauttaa Null-arvon.

Huomautuksia

DLookup-funktio palauttaa yhden kentän arvon ehdoissa määritettyjen tietojen perusteella. Vaikka ehdot ovat valinnainen argumentti, jos et anna ehtoarvoa, DLookup-funktio palauttaa toimialueella satunnaisen arvon.

Jos mikään tietue ei täytä ehtoja tai jos toimialueessa ei ole tietueita, DLookup-funktio palauttaa tyhjäarvon.

Jos useampi kuin yksi kenttä täyttää ehdot, DLookup-funktio palauttaa ensimmäisen esiintymän. Määritä ehto, jolla varmistetaan, että DLookup-funktion palauttama kentän arvo on ainutkertainen. Haluat ehkä käyttää ehdoissa perusavainarvoa, kuten [EmployeeID] seuraavassa esimerkissä, varmistaaksesi, että DLookup-funktio palauttaa yksilöllisen arvon:

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

Riippumatta siitä, käytätkö DLookup-funktiota makrossa tai moduulissa, kyselylausekkeessa vai lasketussa ohjausobjektissa, sinun on muodostettava ehtoargumentti huolellisesti sen varmistamiseksi, että se arvioidaan oikein.

DLookup-funktion avulla voit määrittää ehtoja kyselyn Ehdot-rivillä, kyselyn lasketun kentän lausekkeessa tai päivityskyselyn Päivitä kohteeseen -rivillä.

Voit käyttää DLookup-funktiota myös lomakkeen tai raportin lasketun ohjausobjektin lausekkeessa, jos näytettävä kenttä ei ole siinä tietuelähteessä, johon lomake tai raportti perustuu. Oletetaan esimerkiksi, että sinulla on Order Details -taulukkoon perustuva Order Details -lomake, jossa on ProductID-niminen muokkausruutu, joka näyttää ProductID-kentän. Jos haluat hakea tuotteen nimen (ProductName) Products-taulukosta muokkausruudun arvon perusteella, voit luoda toisen muokkausruudun ja asettaa sen OhjausobjektinLähde-ominaisuudelle seuraavan lausekkeen:

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

Vinkkejä

  • Vaikka voit näyttää DLookup-funktion avulla arvon ulkomaisen taulukon kentästä, voi olla tehokkaampaa luoda kysely, joka sisältää molemmista taulukoista tarvitsemasi kentät, ja luoda sitten lomake tai raportti kyseiseen kyselyyn.
  • Voit etsiä viitetaulukosta arvoja myös ohjatun haun avulla.

Huomautus

Toimialueen tietueiden tallentamattomia muutoksia ei oteta mukaan, kun käytät tätä funktiota. Jos haluat, että DLookup-funktio perustuu muuttuneisiin arvoihin, tallenna ensin muutokset valitsemalla Tiedot-välilehden Tietueet-kohdasta Tallenna tietue, jolloin kohdistus siirtyy toiseen tietueeseen, tai käytä Update-menetelmää.

Esimerkki

Huomautus

Seuraavissa esimerkeissä kerrotaan, kuinka tätä funktiota käytetään Visual Basic for Applications (VBA) -moduulissa. Lisätietoja VBA:n käsittelemisestä on artikkelissa Accessin VBA-viittaus.

Seuraava esimerkki palauttaa nimitiedot ehdot täyttävän tietueen YrityksenNimi-kentästä. Ryhmä on Shippers (Toimittajat) -taulukko. Ehto-argumentti rajoittaa tuloksena saatavan tietuejoukon tietueisiin, joiden Lähettäjätunnus on yhtä suuri kuin 1.

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

Seuraavassa Toimittajat-taulukon esimerkissä lomakkeen ohjausobjektin Toimittajatunnus avulla annetaan ehto DLookup-funktiolle. Huomaa, että viittaus ohjausobjektiin ei ole merkkijonoja osoittavien lainausmerkkien sisällä. Näin varmistetaan, että aina kun DLookup-funktio kutsutaan, Access hakee ohjausobjektista nykyisen arvon.

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

Seuraavassa esimerkissä käytetään muuttujaa , intSearcharvon hakemiseen.

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