Функция DLookup

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Функцию DLookup можно использовать для отображения значения поля, которое отсутствует в источнике записей для формы или отчета. Например, предположим, что у вас есть форма, основанная на таблице "Сведения о заказах". В форме отображаются OrderIDполя , ProductID, UnitPrice, Quantityи Discount . Однако ProductName поле находится в другой таблице, таблице Products . Функцию DLookup можно использовать в вычисляемом элементе управления для отображения ProductName в той же форме.

Синтаксис

DLookup(expr, domain [, criteria])

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

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

Замечания

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

Если ни запись не удовлетворяет criteria, либо если domain она не содержит записей, DLookup функция возвращает .Null

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

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
    "[EmployeeID] = 1")

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

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

Функцию можно также использовать DLookup в выражении в вычисляемом элементе управления в форме или отчете, если поле, которое необходимо отобразить, не находится в источнике записей, на котором основана форма или отчет. Например, предположим, что у вас есть форма "Сведения о заказе", основанная на таблице "Сведения о заказе" с текстовым полем ProductIDProductID . Чтобы выполнить поиск ProductName из Products таблицы на основе значения в текстовом поле, создайте другое текстовое поле и присвойте свойству ControlSource следующее выражение:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

Советы

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

Примечание

Несохраненные изменения записей в domain не включаются при использовании этой функции. Если вы хотите DLookup использовать измененные значения, сначала сохраните изменения, щелкнув Сохранить запись в разделе Записи на вкладке Данные , переместив фокус на другую запись или используя Update метод .

Пример

Примечание

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

В следующем примере возвращается информация об имени из CompanyName поля записи, удовлетворяющего criteria. Домен — это Shippers таблица. Аргумент criteria ограничивает результирующий набор записей теми, для которых ShipperID равно 1.

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

В следующем примере из Shippers таблицы для предоставления критериев для DLookup функции используется элемент управления ShipperID form. Ссылка на элемент управления не включается в кавычки, обозначающие строки. Это гарантирует, что при каждом 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)