Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

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

Синтаксис

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

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

Аргумент

Описание

выражение

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

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

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

условия

Необязательный. Строковое выражение, используемое для ограничения диапазона данных, на котором выполняется функция DLookup . Например, критерии часто эквивалентны предложению WHERE в выражении SQL без слова WHERE. Если условие опущено, функция DLookup оценивает expr для всего домена. Любое поле, включенное в условия, также должно быть полем в домене; В противном случае функция DLookup возвращает значение NULL.

Замечания

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

Если ни одна из записей не соответствуют условиям или подмножество не содержит записей, DLookup возвращает значение NULL.

Если условиям соответствует несколько полей, DLookup возвращает первое вхождение. Следует указать условия, гарантирующие уникальность значения поля, возвращаемого функцией DLookup. Возможно, потребуется использовать в условиях первичный ключ, такой как [EmployeeID] в приведенном ниже примере, чтобы гарантировать, что функция DLookup вернет уникальное значение:

Dim varX As VariantvarX = 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.

В следующем примере возвращается имя из поля "НазваниеКомпании" записи, которая соответствует условиям. Подмножеством является таблица "Поставщики". Аргумент условия ограничивает результирующий набор теми записями, в которых код грузоотправителя равен 1.

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

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

Dim varX As VariantvarX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & Forms!Shippers!ShipperID)

В следующем примере для получения значения используется переменная intSearch.

Dim intSearch As IntegerDim varX As VariantintSearch = 1varX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & intSearch)

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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