У локальних базах даних 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)