- •Системы управления базами данных (субд) access 97 for Windows 95/98
- •3.5. Создание сложных форм
- •3.5.1. Добавление в форму элементов управления
- •3.5.2. Применение вычисляемых элементов управления
- •3.5.3. Использование объектов ole, диаграмм и специальных элементов
- •3.5.4. Настройка режима Graph
- •3.5.5. Создание сводной таблицы
- •3.5.6. Создание и использование подчиненных форм
3.5.2. Применение вычисляемых элементов управления
Так же, как и в запросах, в формах широко применяются вычисляемые элементы управления, которые выводят результат выражения. Выражение задается в свойстве Данные. Оно включает в себя знак = , после которого следуют операции, функции, ссылки на другие элементы управления формы, на поля в источнике данных формы и ссылки на значения, возвращаемые объектами, такими, как управляющие элементы в других открытых формах.
Несвязанный вычисляемый элемент управления имеет однонаправленную связь с данными в выражении Данные. Выражение для свойства Данные можно получать из трех источников:
из той же формы;
из другой открытой формы;
из другого источника данных (с помощью функции Dlookup()).
Данные для несвязанного элемента управления можно получить из других управляющих элементов той же формы. Для этого в свойство Данные создаваемого элемента управления вводится выражение, ссылающееся на уже созданные управляющие элементы или на поля, при этом предполагается, что поле находится в источнике данных или элементе управления той же формы. В таблице приведены примеры выражений для вычисляемых элементов управления, получающих данные из той же формы.
ControlSource Expression Description
=FirstName & “ ” & LastName Displays the values in the FirstName and LastName controls
separated by a space.
=Left(CompanyName,4) Displays the first four characters of the value of the
CompanyName control.
=Sum(Quantity*Price) Displays the sum of the product of the values of the Quantity
and Price fields for all the records displayed by the form.
Displays a zero if the sum is Null; otherwise, displays the
sum.
=Count(EmployeeID) Displays the number of records displayed by the form that
have a non-Null value in the EmployeeID field.
=Count(*) Displays the number of records displayed by the form. Use
the asterisk(*) to count all of the records.
Внимание ! Используемая в вычисляемом элементе управления агрегатная функция, такая как Sum(), Avg() или Count(), может ссылаться только на поля источника данных формы. Ссылаясь на поле, нужно указывать имя поля, а не имя элемента управления. Кроме того, разрешается ссылаться на вычисляемый элемент управления. Например, для вычисления суммы сделок в форме, построенной на базе запроса из таблиц Сделки и Товары, следует использовать в выражении =Sum(…) поля запроса, а не элементов управления формы.
Access позволяет поместить в несвязанный элемент управления информацию из другой открытой формы или из полей ее источника данных. Для этого в характеристике Источник записей элемента управления задается выражение, ссылающееся на эти управляющие элементы или поля. В этом случае используется полностью уточненная ссылка. Например, если открыты формы Продавцы и Сделки, то в форме Сделки можно вывести полное имя сотрудника, включив в нее элемент управления и установив для его свойства Данные значение
=Forms ! Продавцы ! Фамилия & ","&Forms ! Продавцы ! Имя .
Иногда бывает нужно получить в форме информацию, хранимую в таблице или генерируемую запросом, которые не являются для нее источником данных. В этом случае в свойстве Данные вычисляемого элемента управления можно применить функцию DLookup(), позволяющую выводить данные из другой таблицы или запроса. Например, при вводе нового товара в форме Товары желательно, чтобы форма находила и отображала на экране описание его категории из таблицы Типы товаров. Для этого можно включить в форму Товары несвязанный элемент управления и присвоить его свойству Данные функцию DLookup(), которая будет находить описание непосредственно в таблице Типы товаров.
DLookup() - доменная агрегатная функция, которая используется для выполнения вычислений на основе значений в поле таблицы или запроса. К доменным агрегатным функциям относятся:
DLookup() - возвращает значение заданного поля;
Dmin(), Dmax() - возвращает минимальное или максимальное значения в заданном поле;
Dfirst(), Dlast() - возвращает значение в заданном поле из первой или последней записи;
DAvg() - возвращает среднее арифметическое значение в заданном поле;
Dsum() - возвращает сумму значений в заданном поле;
DstDev(), DstDevP() - возвращает для заданного поля стандартное отклонение или стандартное отклонение по совокупности;
Dvar(), DvarP() - возвращает для заданного поля стандартную дисперсию или стандартную дисперсию по совокупности;
DCount() - возвращает число записей с ненулевыми значения в заданном поле.
Синтаксис функции DLookup() имеет следующий вид:
DLookup("имя_поля", "имя_таблицы" или "имя_запроса", "условие поиска")
Все три аргумента должны быть строковыми. Для определения условия поиска используется следующий синтаксис:
Имя_поля = Forms!имя_формы!имя_элемента_управления
Левая часть условия поиска задает имя поля в таблице или запросе, где выполняется поиск, а правая представляет собой полностью уточненную ссылку на элемент управления формы с искомым значением.
Имеется также возможность использовать характеристику Column для извлечения данных из комбинированного списка и включения их в несвязанный элемент управления. Создается несвязанный элемент управления типа "поле" и в его свойстве Данные помещается выражение = имя комбинированного списка.Column(n), где n - номер столбца комбинированного блока (отчет ведется с 0). По умолчанию значения, выводимые в столбцах комбинированного блока, имеют тип данных Text. Поэтому прежде,чем использовать значения в вычислениях, необходимо преобразовать тип данных из Text в другой формат с помощью одной из пяти формул числового преобразования.
Data Conversion Function Converts a String or Numeric Expression To
CCur Currency
CDbl Double
CInt Integer
CLng Long
CSng Single
CBool Boolean; if the expression is zero, False is returned; otherwise, True is returned.
CByte Byte
CDate Date
CStr String
CVar Variant
CVErr Variant of subtype Error
Fix Returns the integer portion of a number; rounds negative numbers up.
Int Returns the integer portion of a number; rounds negative numbers down.
