В классических базах данных Access можно использовать функцию DLookup , чтобы получить значение определенного поля из указанного набора записей (домена). Используйте функцию DLookup в модуле Visual Basic для приложений (VBA), макросе, выражении запроса или вычисляемом элементе управления в форме или отчете.
С помощью функции DLookup можно отобразить значение поля, которое не находится в источнике записей для формы или отчета. Например, предположим, что у вас есть форма, основанная на таблице "Сведения о заказах". На ней отображаются поля "КодЗаказа", "КодТовара", "ЦенаЗаЕдиницу", "Количество" и "Скидка". Тем не менее поле "НаименованиеТовара" находится в другой таблице (в таблице "Товары"). Вы можете использовать функцию DLookup в вычисляемом элементе управления, чтобы вывести поле "НаименованиеТовара" на той же форме.
Синтаксис
DLookup(expr, domain [, criteria] )
Функция DLookup имеет следующие аргументы:
| Аргумент | Описание |
|---|---|
| выражение | Обязательный аргумент. Выражение, определяющее поле, значение которого вы хотите возвращать. Это может быть строковое выражение, идентифицирующее поле в таблице или запросе, или выражение, выполняющее вычисление данных в этом поле. В expr можно включить имя поля в таблицу, элемент управления в форме, константу или функцию. Если expr включает функцию, она может быть встроенной или определяемой пользователем, но не может быть другой агрегатной или агрегатной функцией SQL. |
| подмножество | Обязательный аргумент. Строковое выражение, определяющее набор записей, которые образуют подмножество. Это может быть имя таблицы или имя запроса, для которого не требуются параметры. |
| Условие. | — необязательный аргумент. Строковое выражение, используемое для ограничения диапазона данных, на котором выполняется функция DLookup . Например, критерии часто эквивалентны предложению WHERE в выражении SQL без слова WHERE. Если условие опущено, функция DLookup оценивает expr для всего домена. Любое поле, включенное в условия, также должно быть полем в домене; В противном случае функция DLookup возвращает значение NULL. |
Замечания
Функция DLookup возвращает значение одного поля на основе сведений, указанных в критериях. Хотя условие является необязательным аргументом, если не указать значение для условий, функция DLookup возвращает случайное значение в домене.
Если никакие записи не удовлетворяют условиям или домен не содержит записей, функция DLookup возвращает значение NULL.
Если критерию соответствует несколько полей, функция DLookup возвращает первое вхождение. Следует указать условия, гарантирующие уникальность значения поля, возвращаемого функцией DLookup. Может потребоваться использовать значение первичного ключа для условий, например [EmployeeID] в следующем примере, чтобы функция DLookup возвращала уникальное значение:
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 для приложений (VBA). Дополнительные сведения о работе с VBA см. в справочнике по VBA access.
В следующем примере возвращаются сведения об имени из поля CompanyName условия, удовлетворяющего записи. Подмножеством является таблица "Поставщики". Аргумент условия ограничивает результирующий набор записей теми, для которых ShipperID равен 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)