Функция DLookup

Отнася се за
Access за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

В настолни бази данни на Access можете да използвате DLookup функцията, за да получите стойността на определено поле от определен набор от записи (домейн). Можете да използвате DLookup в модул на Visual Basic for Applications (VBA), макрос, израз на заявка или изчисляема контрола във формуляр или отчет.

Можете да използвате функцията DLookup , за да покажете стойността на поле, което не е в източника на записи за вашия формуляр или отчет. Да предположим например, че имате формуляр, базиран на таблица с подробни данни за поръчки. Формулярът OrderIDпоказва , ProductID, UnitPrice, Quantityи Discount полета. Обаче полето ProductName е в друга таблица – таблицата Products . Можете да използвате DLookup функцията в изчисляема контрола за показване ProductName в същия формуляр.

Синтаксис

DLookup(expr, domain [, criteria])

Функцията DLookup има следните аргументи:

Аргумент Описание
expr Задължителен. Израз, който идентифицира полето, чиято стойност искате да върнете. Това може да бъде низов израз, който идентифицира поле в таблица или заявка, или израз, който извършва изчисление върху данните в това поле. В expr, можете да включите името на поле в таблица, контрола на формуляр, константа или функция. Ако expr съдържа функция, тя може да бъде вградена или дефинирана от потребителя, но не и друга агрегатна или агрегатна функция на домейн SQL .
domain Задължително. Низов израз, който идентифицира набора от записи, който съставлява домейна. Това може да бъде името на таблица или името на заявка за заявка, която не изисква параметър.
criteria Незадължително. Низов израз, използван за ограничаване на диапазона от данни, върху които DLookup се изпълнява функцията. Например criteria често е еквивалентно WHERE на изречението в SQL израза, без думата WHERE. Ако изпуснете criteria, DLookup функцията се изчислява expr спрямо целия домейн. Всяко поле, включено в criteria трябва да бъде също и поле в domain. В противен случай DLookup функцията връща Null.

Забележки

Функцията DLookup връща стойност на единично поле въз основа на информацията, указана в criteria. Въпреки че criteria е незадължително, ако не предоставите стойност за него, DLookup функцията връща случайна стойност в домейна.

Ако нито един запис не отговаря criteriaна изискванията или ако domain не съдържа никакви записи, DLookup функцията връща Null.

Ако се срещнат criteriaповече от едно поле , DLookup функцията връща първата поява. Трябва да зададете критерии, които гарантират, че стойността на полето, върната от, DLookup е уникална. Можете да използвате стойност на първичен ключ за вашите критерии, както [EmployeeID] в следния пример, за да се гарантира, че се DLookup връща уникална стойност:

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

Независимо дали използвате DLookup функцията в макрос или модул, израз на заявка, или изчисляема контрола, съставете внимателно аргумента criteria , така че Access да го изчисли правилно.

Можете да използвате функцията DLookup , за да зададете критерии в реда за критерии на заявка, в израз за изчисляемо поле на заявка или в реда Update To на заявка за актуализиране.

Можете също да използвате DLookup функцията в израз в изчисляема контрола във формуляр или отчет, ако полето, което трябва да покажете, не е в източника на записи, на който се основава вашият формуляр или отчет. Да предположим например, че имате формуляр за подробни данни за поръчки, базиран на таблица с подробни данни за поръчки с текстово поле, наречено ProductID за показване на полето ProductID . За да търсите ProductName от Products таблица въз основа на стойността в текстовото поле, създайте друго текстово поле и задайте свойството му ControlSource на следния израз:

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

Съвети

  • Въпреки че можете да използвате функцията DLookup , за да покажете стойност от поле във външна таблица, може да се окаже по-ефективно да създадете заявка, съдържаща полетата от двете таблици, от които имате нужда, а след това да базирате формуляра или отчета на тази заявка.
  • Можете да използвате съветника за търсене, за да намерите данни във външна таблица.

Забележка

Незаписаните промени в записите domain не се включват, когато използвате тази функция. Ако искате DLookup да използвате променените стойности, първо запишете промените, като щракнете върху "Съхрани записа " под "Записи " в раздела " Данни ", преместите фокуса към друг запис или използвате метода Update .

Пример

Забележка

Примерите по-долу илюстрират използването на тази функция във Visual Basic for Applications (VBA). За повече информация за работата с VBA вж. справката за Access VBA.

Следващият пример връща информация за имена от полето CompanyName на записа, който отговаря на criteria. Домейнът е таблица Shippers . Аргументът criteria ограничава получения набор от записи до тези, за които ShipperID е равно 1на .

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

В следващия пример от таблицата Shippers се използва контролата ShipperID на формуляр, за да предостави критерии за DLookup функцията. Препратката към контролата не е включена в кавички, които означават низове. Това гарантира, че при всяко DLookup изпълнение Access ще получи текущата стойност от контролата.

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

В следващия пример се използва променлива, intSearch, за да се получи стойността.

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