Функция DLookup

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

Примечание : Эта статья не относится к веб-приложениям Access.

С помощью функции DLookup можно отобразить значение поля, которое не находится в источнике записей для формы или отчета. Например, предположим, что у вас есть форма, основанная на таблице "Сведения о заказах". На ней отображаются поля "КодЗаказа", "КодТовара", "ЦенаЗаЕдиницу", "Количество" и "Скидка". Тем не менее поле "НаименованиеТовара" находится в другой таблице (в таблице "Товары"). Вы можете использовать функцию DLookup в вычисляемом элементе управления, чтобы вывести поле "НаименованиеТовара" на той же форме.

Синтаксис

DLookup( выражение; подмножество [; условия] )

Функция DLookup имеет следующие аргументы:

Аргумент

Описание

выражение

Обязательный аргумент. Выражение, определяющее поле, значение которого вы хотите возвращать. Это может быть строковое выражение поля в таблице или запросе либо выражение, которое выполняет вычисление данных в этом поле. В выражение можно включить имя поля в таблице, элемента управления в форме, константы или функции. Выражение может включать в себя встроенную или пользовательскую функцию, но не другую агрегатную функцию по подмножеству или агрегатную функцию SQL.

подмножество

Обязательный аргумент. Строковое выражение, определяющее набор записей, которые образуют подмножество. Это может быть имя таблицы или имя запроса, для которого не требуются параметры.

условия

Необязательный аргумент. Строковое выражение, используемое для ограничения диапазона данных, к которому применяется функция DLookup. Например, условия часто эквивалентны предложению WHERE в выражении SQL (без слова WHERE). Если условия опущены, функция DLookup применяет выражение ко всему подмножеству. Любое поле, которое включено в условия, также должно входить в подмножество. В противном случае 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, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

В следующем примере возвращается имя из поля "НазваниеКомпании" записи, которая соответствует условиям. Подмножеством является таблица "Поставщики". Аргумент условия ограничивает результирующий набор теми записями, в которых код грузоотправителя равен 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)
Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×