Access työpöytätietokannoissa voit käyttää DLookup-funktiota tietyn kentän arvon hakemiseen määritetystä tietuejoukosta ( ryhmä ). Käytä DLookup-funktiota Visual Basic for Applications (VBA) -moduulissa, makro, kyselyn lausekkeessa tai raportin laskettu ohjausobjekti.
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, ryhmä [, ehto] )
DLookup-funktion syntaksilla on seuraavat argumentit:
Argumentti |
Kuvaus |
---|---|
lauseke |
Pakollinen. Lauseke, joka määrittää kentän, jonka arvon haluat palauttaa. Lauseke voi olla taulukon tai kyselyn kentän määrittävä merkkijonolauseke, tai se voi olla kentän tietojen laskennan suorittava lauseke. Lauseke voi sisältää taulukon kentän, lomakkeen ohjausobjektin, vakion tai funktion nimen. Jos lauseke sisältää funktion, se voi olla joko valmis tai käyttäjän määrittämä funktio, mutta ei toinen ryhmäkoostefunktio eikä 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. |
ehto |
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 ehto-argumentilla määritettyjen tietojen perusteella. Vaikka ehto on valinnainen argumentti, jos ehdolle ei anneta arvoa, DLookup-funktio palauttaa ryhmästä satunnaisen arvon.
Jos mikään tietue ei täytä ehtoa tai josryhmä ei sisällä tietueita, DLookup-funktio palauttaa Null-arvon.
Jos useat kentät täyttävät ehdon, DLookup-funktio palauttaa ensimmäisen esiintymän. Määritä ehto, jolla varmistetaan, että DLookup-funktion palauttama kentän arvo on ainutkertainen. Käyttämällä ehtoa varten perusavain -arvoa, esimerkiksi seuraavassa esimerkissä arvoa [EmployeeID], voit varmistaa, että DLookup-toiminto palauttaa ainutkertaisen arvon:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Huolimatta siitä, käytätkö DLookup-funktiota makrossa tai moduulissa, kyselyn lausekkeessa tai lasketussa ohjausobjektissa, varmista ehto-argumentin arvon oikea laskenta muodostamalla argumentti huolella.
Käyttämällä DLookup-funktiota voit määrittää ehtoja kyselyn Ehdot-riville, kyselyn lasketun kentän lausekkeelle tai päivityskyselyn Päivitä-riville.
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)
Vihjeitä
-
Vaikka DLookup-funktiolla voidaan näyttää viitetaulukkon kentän arvo, voi olla tehokkaampaa luoda kysely, joka sisältää tarvittavat kentät kummastakin taulukosta, ja käyttää sitten lomakkeen tai kyselyn perustana tätä kyselyä.
-
Voit etsiä viitetaulukosta arvoja myös ohjatun haun avulla.
Huomautus: Ryhmän tietueiden tallentamattomia muutoksia ei oteta mukaan käytettäessä 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.
Seuraavassa esimerkissä palautetaan sen tietueen CompanyName (YrityksenNimi) -kentän nimitiedot, joka täyttää ehdon. Ryhmä on Shippers (Toimittajat) -taulukko. Argumentti ehto rajoittaa tuloksena olevan tietuejoukon tietueisiin, joiden kohdalla ShipperID (ToimittajanTunnus) on 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-funktiota kutsutaan, Access hankkii ohjausobjektista nykyisen arvon.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & Forms!Shippers!ShipperID)
Seuraavassa esimerkissä arvo haetaan käyttämällä muuttujaa intSearch.
Dim intSearch As Integer
Dim varX As Variant intSearch = 1 varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & intSearch)