У Access настільних базах даних можна скористатися функцією DLookup , щоб отримати значення певного поля з указаного набору записів ( домен ). Використовуйте функцію DLookup у модулі Visual Basic for Applications (VBA), макрос, виразі запиту або обчислюваний елемент керування у формі чи звіті.
Функцію DLookup можна використовувати, щоб відобразити значення поля, якого немає в джерелі записів форми або звіту. Припустімо, наприклад, що є форма на основі таблиці відомостей про замовлення. У формі відображаються поля "Ідентифікатор_замовлення", "Ідентифікатор_продукту", "Вартість_одиниці_товару", "Кількість" і "Знижка". Однак поле "Назва_продукту" розташовано в іншій таблиці під назвою "Продукти". У такому випадку можна скористатися функцією DLookup в обчислюваному елементі керування, щоб відобразити поле "Назва_продукту" в цій же формі.
Синтаксис
DLookup( вираз, домен [, умови] )
Синтаксис функції DLookup має такі аргументи:
Аргумент |
Опис |
---|---|
expr |
Обов’язковий. Вираз, який визначає поле, значення якого потрібно повернути. Це може бути рядковий вираз, який визначає поле в таблиці або запиті, або це може вираз, який виконує обчислення даних у цьому полі. В аргументі expr можна вказати ім’я поля в таблиці, елемента керування у формі, константи або функції. Якщо аргумент expr включає функцію, вона може бути вбудованою або користувацькою, але не може бути іншою агрегатною функцією домену чи агрегатною функцією SQL. |
домен |
Обов’язковий аргумент. Рядковий вираз, який визначає набір записів, щоб складають домен. Це може бути ім’я таблиці або ім’я запиту, у якого немає обов’язкових параметрів. |
умови |
— необов’язковий аргумент. Рядковий вираз, який використовується для обмеження діапазону даних, для якого виконується функція DLookup . Наприклад, умови часто еквівалентні речелю WHERE у виразі SQL без слова WHERE. Якщо аргумент criteria не вказано, функція DLookup обчислює вираз для всього домену. Будь-яке поле, включене до умов , також має бути полем у домені; В іншому разі функція DLookup повертає Null-значення. |
Примітки
Функція DLookup повертає значення одного поля на основі даних, указаних в аргументі умови. Хоча аргумент умови – це необов’язковий аргумент, якщо не вказати значення аргументу умови, функція DLookup поверне довільне значення в домені.
Якщо жоден запис не задовольняє умовам в аргументі умови або домен не містить жодного запису, функція DLookup повертає Null-значення.
Якщо умовам відповідає кілька полів, функція DLookup повертає перший екземпляр. Слід указати умови, які забезпечать унікальність значення поля, повернутого функцією DLookup . Щоб функція DLookup повернула унікальне значення, можна використати значення первинний ключ, наприклад [EmployeeID] в наведеному нижче прикладі.
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Де б не використовувалася функція DLookup – у макросі, модулі, виразі запиту чи обчислюваному елементі керування, аргумент умови потрібно створювати з обережністю, щоб забезпечити правильність його обчислення.
За допомогою функції DLookup можна вказати умови в рядку Критерії запиту, у виразі обчислюваного поля в запиті або в рядку Оновлення до в запит на оновлення.
Функцію DLookup можна також використовувати у виразі обчислюваного елемента керування у формі або звіті, якщо потрібного поля немає в джерелі записів, на основі якого створено цю форму або цей звіт. Припустімо, наприклад, що є форма "Відомості про замовлення", створена на основі таблиці "Відомості про замовлення" з текстовим полем під назвою "Ідентифікатор_продукту", у якому відображається значення поля "Ідентифікатор_продукту". Щоб підставити значення "Назва_подукту" з таблиці "Продукти", можна створити ще одне текстове поле та задати для його властивості ControlSource значення, що дорівнює такому виразу:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Поради
-
Хоча функцію DLookup можна використовувати для відображення значення з поля в підлегла таблиця, може бути ефективніше створити запит із полями, потрібними в обох таблицях, а потім базувати форму або звіт на основі цього запиту.
-
Знайти значення в зовнішній таблиці можна також за допомогою майстра підстановок.
Примітка.: Незбережені зміни в записах у домені не включаються під час використання цієї функції. Якщо потрібно, щоб функція DLookup базвалася на змінених значеннях, спочатку потрібно зберегти зміни, натиснувши кнопку Зберегти запис у розділі Записи на вкладці Дані , перемістивши фокус до іншого запису або скориставшись методом Update .
Приклад
Примітка.: У прикладах нижче показано використання цієї функції в модулі Visual Basic for Applications (VBA). Докладні відомості про роботу з VBA див. в статті Довідник із VBA в Access.
У наведеному нижче прикладі показано функцію, що повертає відомості про ім’я з поля "Назва_компанії" запису, який задовольняє умовам. Домен – це таблиця "Перевізники". Аргумент умови обмежує отриманий набір записів, включаючи в нього лише ті, у яких поле "Ідентифікатор_перевізник" дорівнює 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
У наступному прикладі значення умови у функції 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)