Функция DLookup

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

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

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

Синтаксис

DLookup(expr, domain [, criteria])

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

Аргумент Описание
expr Обязательный аргумент. Выражение, определяющее поле, значение которого вы хотите возвращать. Это может быть строковое выражение, определяющее поле в таблице или запросе, или выражение, которое выполняет вычисление данных в этом поле. В exprтаблицу можно добавить имя поля, элемента управления формы, константы или функции. Если expr включает функцию, она может быть встроенной или определяемой пользователем, но не может быть агрегатной или агрегатной функцией по подмножеству SQL .
domain — обязательный аргумент. Строковое выражение, определяющее набор записей, составляющих домен. Это может быть имя таблицы или имя запроса, не требующего параметра.
criteria — необязательный аргумент. Строковое выражение, используемое для ограничения диапазона данных, с которыми DLookup выполняется функция. Например, criteria часто эквивалентно WHERE предложению в SQL выражении без слова WHERE. Если этот аргумент опущен criteria, функция вычисляется expr относительно всего доменаDLookup. Любое поле, включенное в 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 функцию также можно использовать в выражении вычисляемого элемента управления в форме или отчете, если поле, которое требуется отобразить, не входит в источник записей, на котором основана форма или отчет. Например, предположим, что у вас есть форма "Сведения о заказах", основанная на таблице "Сведения о заказах", с текстовым ProductID полем, которое отображает поле ProductID . Для поиска ProductNameProducts в таблице на основе значения в текстовом поле создайте другое текстовое поле и задайте для его свойства ControlSource следующее выражение:

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

Советы

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

Примечание

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

Пример

Примечание

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

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

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

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