Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

В 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 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.

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

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

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

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)

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

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

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

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

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

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

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

×