Функція DLookup

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

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

Функцію DLookup можна використовувати, щоб відобразити значення поля, якого немає в джерелі записів форми або звіту. Припустімо, наприклад, що є форма на основі таблиці відомостей про замовлення. У формі відображаються поля "Ідентифікатор_замовлення", "Ідентифікатор_продукту", "Вартість_одиниці_товару", "Кількість" і "Знижка". Однак поле "Назва_продукту" розташовано в іншій таблиці під назвою "Продукти". У такому випадку можна скористатися функцією DLookup в обчислюваному елементі керування, щоб відобразити поле "Назва_продукту" в цій же формі.

Синтаксис

DLookup(expr, domain [, criteria] )

Синтаксис функції DLookup має такі аргументи:

Аргумент Опис
expr Обов’язковий. Вираз, який визначає поле, значення якого потрібно повернути. Це може бути рядковий вираз, який визначає поле в таблиці чи запиті, або вираз, який виконує обчислення даних у цьому полі. У виразі можна включити ім'я поля в таблицю, елемент керування у формі, константу або функцію. Якщо вираз містить функцію, її можна використовувати як вбудовану, так і визначену користувачем, але не іншу агрегатну функцію домену або агрегатну функцію SQL.
домен Обов’язковий аргумент. Рядковий вираз, який визначає набір записів, щоб складають домен. Це може бути ім’я таблиці або ім’я запиту, у якого немає обов’язкових параметрів.
умови — необов’язковий аргумент. Рядковий вираз, який використовується для обмеження діапазону даних, для якого виконується функція DLookup . Наприклад, умови часто еквівалентні речелю WHERE у виразі SQL без слова WHERE. Якщо аргумент criteria не вказано, функція DLookup обчислює вираз для всього домену. Будь-яке поле, включене до умов , також має бути полем у домені; В іншому разі функція DLookup повертає Null-значення.

Примітки

Функція DLookup повертає значення одного поля на основі даних, указаних у критерії. Хоча аргумент criteria – необов'язковий аргумент, якщо значення умов не вказано, функція DLookup повертає випадкове значення в домені.

Якщо жоден запис не задовольняє умови або домен не містить записів, функція DLookup повертає Null-значення.

Якщо умовам відповідає кілька полів, функція DLookup повертає перший екземпляр. Слід указати умови, які забезпечать унікальність значення поля, повернутого функцією DLookup . Щоб функція DLookup повернула унікальне значення, можна використати значення первинного ключа, наприклад [EmployeeID] у наведеному нижче прикладі.

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

Незалежно від того, використовуєте ви функцію DLookup у макросі чи модулі, виразі запиту або обчислюваному елементі керування, аргумент criteria потрібно створювати уважно, щоб переконатися, що його буде обчислено правильно.

За допомогою функції DLookup можна вказати умови в рядку Критерії запиту, у виразі обчислюваного поля в запиті або в рядку Оновлення до в запиті на оновлення.

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

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

Поради

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

Примітка.

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

Приклад

Примітка.

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

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

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

У наступному прикладі значення умови у функції DLookup надає елемент керування форми "Ідентифікатор_перевізник" із таблиці "Перевізники". Зверніть увагу, що посилання на елемент керування не взято в лапки, які позначають рядки. Це гарантує, що програма 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)