MyTetra Share
Делитесь знаниями!
Метод Application. DLookup (Access)
Время создания: 04.07.2019 11:02
Текстовые метки: VBA_Acces, DLookup
Раздел: !Закладки - VBA - Access

Метод Application. DLookup (Access)

  • 05.02.2019

С помощью функции DLookup можно получить значение определенного поля из указанного набора записей (домена).

Синтаксис

Expression. DLookup (Expr, domain, условия_отбора)

выражение: переменная, представляющая объект Application.

Параметры


Имя

Обязательный или необязательный

Тип данных

Описание

Выражен

Обязательный

String

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

Domain (Домен)

Обязательный

String

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

Criteria

Необязательный

Variant

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

Возвращаемое значение

Variant

Примечания

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

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

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

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

VB

Dim varX As Variant

varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1")


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

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

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

VB

=DLookup("[ProductName]", "Products", "[ProductID] =" _

& Forms![Order Details]!ProductID)


Совет

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

Пример

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

VB

Dim varX As Variant

varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = 1")



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

VB

Dim varX As Variant

varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = " _

& Forms!Shippers!ShipperID)



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

VB

Dim intSearch As Integer

Dim varX As Variant

intSearch = 1

varX = DLookup("[CompanyName]", "Shippers", _

"[ShipperID] = " & intSearch)



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

VB

' ***************************

' Typical Use

' Numerical values. Replace "number" with the number to use.

variable = DLookup("[FieldName]", "TableName", "[Criteria] = number")


' Strings.

' Numerical values. Replace "string" with the string to use.

variable = DLookup("[FieldName]", "TableName", "[Criteria]= 'string'")


' Dates. Replace "date" with the string to use.

variable = DLookup("[FieldName]", "TableName", "[Criteria]= #date#")

' ***************************


' ***************************

' Referring to a control on a form

' Numerical values

variable = DLookup("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)


' Strings

variable = DLookup("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")


' Dates

variable = DLookup("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")

' ***************************


' ***************************

' Combinations

' Multiple types of criteria

variable = DLookup("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _

& " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _

& " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")

' Use two fields from a single record.

variable = DLookup("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")

' Expressions

variable = DLookup("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")

' Control Structures

variable = DLookup("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")

' ***************************


Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования