Использование статистических функций в формах
Функция DLookup
Обычно используется для вывода в форме значения поля из таблицы, не входящей в базовый запрос. Например, в форме "Заказы" (Orders) можно отобразить дополнительные поля из таблицы "Клиенты" (Customers), которые не были включены в базовый запрос. Например, чтобы отобразить значение поля "Телефон" (Phone), в качестве значения свойства Данные (Control Source) вычисляемого элемента управления нужно ввести следующее выражение:
=
DLookup(
"[Телефон]"
;
"[Клиенты]"
;
"[КодКлиента] = '"
& Forms!{Заказы]![КодКлиента] & '
""
)
Для английской версии Access:
=
DLookUp(
"[Phone]"
;
"[Customers]"
;
"[CustomerlD] = '"
& Forms![Orders]![CustomerlD] &
"'"
)
Критерием для выбора записи из таблицы "Клиенты" (Customers) является поле "КодКлиента" (CustomerlD) в форме "Заказы" (Orders).
Замечание
В данном случае выбор записей идет по полю текстового типа "КодКлиента" (CustomerlD), поэтому условие на его значение должно задаваться в виде строки, заключенной в кавычки или апострофы. Для этого необходима конкатенация заданного в условии значения с двух сторон с апострофом или кавычкой. Включение апострофа в строку не отличается от включения обычной буквы или цифры, а чтобы включить в строку символ кавычки, ее придется удвоить, чтобы она отличалась от кавычек, ограничивающих само строковое значение. Таким образом, если строка состоит из одной кавычки, она будет выглядеть так: """", в нашем примере для задания условия на текстовое значение мы использовали апострофы.
Функции Dcount и DSum
Предположим, в форме "Заказы" (Orders) требуется создать вычисляемые поля для отображения количества заказов, сделанных клиентом, и общей суммы заказов. Для этого нужно создать два вычисляемых поля, а в качестве значений свойства Данные (Control Source) ввести следующие выражения:
=
DCount(
"[КодЗаказа]"
;
"[Заказы]"
;
"[КодКлиента] = '"
& Forms![Заказы]![КодКлиента] & '
""
)
=
DSum(
"[ОтпускнаяЦена]"
;
"'[Счета]"
;
"[КодКлиента] = '"
& Forms![Заказы]![КодКлиента] &
"'"
)
Для английской версии Access, соответственно:
=
DCount(
"[OrderID]"
;
"[Orders]"
;
"[CustomerlD] = '"
& Forms![Orders]![CustomerlD] &
"'")
= DSum("[ExtendedPrice]"; "[Invoices]"; "[CustomerlD] = '" & Forms![Orders]![CustomerlD] & "'"
)
Функция DMax
Часто требуется организовать счетчик в одном из полей формы, например номер заказа должен при вводе каждой новой записи увеличиваться на единицу. Стандартный тип поля Счетчик (AutoNumber) не всегда подходит для этих целей, т. к. значение в поле такого типа нельзя вводить вручную. Если должна допускаться ручная корректировка номера заказа, удобнее для хранения номера заказа добавить в таблицу обычное числовое поле, а в форму поместить присоединенное к нему вычисляемое поле, у которого в свойстве Значение по умолчанию (Default Value) задано выражение:
=
DMax(
"[КодЗаказа]"
;
"[Заказы]"
)
+
1
Для английской версии:
=
DMax(
"[OrderlD]"
;
"[Orders]"
)
+
1