На этом шаге мы рассмотрим создание вычисляемых полей.
С помощью редактора полей Fields Editor можно создавать так называемые вычисляемые поля. Вычисляемое поле - это поле, значение которого не существует в реальной БД, а вычисляется по значению других полей.
И вновь обратимся к нашей программе, предназначенной для работы с БД FIRMA. В НД Table2 существуют поляКоличество и Цена, поэтому было бы вполне логично, если кроме этих двух полей отображалась бы поле Сумма, которое содержало бы стоимость всего товара.
Для того чтобы создать это поле, вызовите редактор полей НД Table2 и, щелкнув по редактору правой кнопкой мыши, выберите пункт меню New Field. В диалоговом окне New Field (рисунок 1) нужно выбрать переключатель Calculated, ввести имя создаваемого поля (Summa), выбрать его тип, в данном случае Currency (числа от 5,0·10-324 до 1,7·10308 в денежном формате). Для некоторых полей так же необходимо задавать размер Size (например, для строковых типов). Щелчок по кнопке OK приведет к созданию нового компонента TField.
Напишите обработчик события OnCalcFields компонента Table2.
Событие OnCalcFields возникает всякий раз, когда курсор (указатель текущей записи) перемещается в НД от записи к записи. Это событие возникает и при инициализации НД (после открытия), а также после фильтрации записей в НД. Кроме того, если свойство AutoCalcFields набора данных содержит True, событие OnCalcFields наступает также при модификации значений невычисляемых полей в режимах dsInsert и dsEdit.
Присвойте свойству DisplayLabel компонента TField Summa, значение Сумма и запустите программу. Результат работы приложения изображен на рисунке 1.
Обработчик события OnCalcFields содержит реализацию алгоритма определения вычисляемого поля или группы полей. Необходимо помнить, что в этом обработчике значение может быть присвоено только вычисляемому полю и никакому другому.
На следующем шаге мы рассмотрим создание полей выбора данных (Lookup-полей).
Для перехода к первой записи набора данных используется метод First (ADOTable.First). Для установки указателя на следующую запись применяется процедура Next. Установка указателя на предыдущую запись – Prior, а на последнюю – Last.
Свойство RecNo (типа Longint) используется для определения номера записи в наборе данных, а также для перехода к указанной записи в наборе (указанная запись становиться текущей).
Для определения количества записей в наборе данных используется свойство RecordCount.
Наборы данных могут находиться в открытом и закрытом состояниях, для чего используется свойство Active. Если у этого свойства установлено значение True (Open), то набор данных находится в открытом состоянии, иначе набор закрыт (Close). Для управления этим состоянием можно использовать компонент CheckBox.
Каждое поле набора данных представляет собой столбец, для работы с которым служит объект Field.
Свойство FieldCount показывает количество полей (столбцов) набора данных. Это свойство доступно только для чтения. Количество полей набора данных может отличаться от физического числа полей таблицы БД. Состав полей формируется при разработке приложения с помощью Редактора полей набора данных (для создания статических (устойчивых) полей) и Редактора столбцов сетки DBGrid.
Для запуска Редактора полей следует сделать двойной щелчок на компоненте ADOTable или через контекстное меню для этого компонента выбрать значение Fields Editor. Первоначально список статических полей пуст, т.е. все поля набора данных являются динамическими. Для создания статического поля следует вызвать контекстное меню Редактора полей и выбрать пункт Add Fields (Добавить поля). Для удаления статического поля его необходимо выделить и нажать клавишу Delete.