Функція DLookup

Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

У локальних базах даних Access за допомогою DLookup цієї функції можна отримати значення певного поля із зазначеного набору записів (домену). Ви можете використовувати DLookup в модулі Visual Basic for Applications (VBA), макросі, виразі запиту або обчислюваному елементі керування у формі чи звіті.

За допомогою цієї DLookup функції можна відобразити значення поля, якого немає в джерелі записів форми або звіту. Припустімо, наприклад, що є форма на основі таблиці відомостей про замовлення. Форма відображає поля , OrderIDProductID, UnitPriceQuantityDiscount , а також . Проте це ProductName поле розташовано в іншій таблиці ( Products таблиці). Її DLookup можна використовувати в обчислюваному елементі керування для відображення ProductName в тій самій формі.

Синтаксис

DLookup(expr, domain [, criteria])

Функція DLookup має такі аргументи:

Аргумент Опис
expr Обов’язковий. Вираз, який визначає поле, значення якого потрібно повернути. Це може бути рядковий вираз, який визначає поле в таблиці чи запиті, або вираз, який виконує обчислення даних у цьому полі. У exprній можна вказати ім'я поля в таблиці, елемента керування у формі, константи або функції. Якщо expr вона включає функцію, вона може бути вбудованою або користувацькою, але не може бути іншою агрегатною або SQL агрегатною функцією домену.
domain — обов’язковий аргумент. Рядковий вираз, який визначає набір записів, що входять до домену. Це може бути ім'я таблиці або ім'я запиту, у якого немає обов'язкових параметрів.
criteria — необов’язковий аргумент. Рядковий вираз, який дає можливість обмежити діапазон даних, до якого DLookup застосовується функція. Наприклад, criteria часто еквівалентне реченню WHERE у SQL виразі без слова WHERE. Якщо це DLookup значення criteriaне вказано, функція обчислюватиме 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 функції можна вказати умови в рядку "Критерії " запиту, в обчислюваному полі виразу запиту або в рядку "Оновлення до" запиту на оновлення.

Функцію DLookup також можна використовувати у виразі обчислюваного елемента керування у формі або звіті, якщо потрібного поля немає в джерелі записів, на основі якого створено цю форму або звіт. Припустімо, наприклад, що є форма "Відомості про замовлення", створена на основі таблиці "Відомості про замовлення" з текстовим полем ProductID , у якому відображається відповідне ProductID поле. Щоб шукати ProductName дані в Products таблиці на основі значення в текстовому полі, створіть інше текстове поле та задайте для його властивості ControlSource такий вираз:

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

Поради

  • Хоча функцію DLookup можна використовувати, щоб відобразити значення з поля підлеглої таблиці, може бути ефективніше створити запит, який міститиме необхідні поля з обох таблиць, а потім створити на основі цього запиту форму або звіт.
  • Знайти значення в зовнішній таблиці можна також за допомогою майстра підстановок.

Примітка.

Ця функція не враховує незбережені зміни в domain записах. Якщо потрібно DLookup використати змінені значення, спочатку збережіть зміни, натиснувши кнопку Зберегти запис у розділі "Записи " на вкладці " Дані ", перемістивши фокус до іншого запису або скориставшись методом Update .

Приклад

Примітка.

У прикладах нижче показано використання цієї функції в модулі Visual Basic for Applications (VBA). Докладні відомості про використання модуля VBA див. в довіднику з VBA в Access.

У наведеному нижче прикладі повертаються відомості про ім'я з CompanyName поля запису, яке criteriaзадовольняє . Домен – це Shippers таблиця. Аргумент criteria обмежує отриманий набір записів лише тими, для яких ShipperID1дорівнює .

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

У наступному прикладі Shippers значення функції надає елемент DLookup керування ShipperID форми. Посилання на елемент керування не взято в лапки, які позначають рядки. Це гарантує, що програма Access щоразу під час DLookup запуску отримуватиме поточне значення з елемента керування.

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)