Практическая работа N9 S Вычисляемые поля
Поле. не предусмотренное при создании. значения которого вычисляются на
основанин значений других полей. называется вычисляемым полем.
Добавить поле в таблицу Persons базы данных «Отдел кадров», вычисляющее
возраст сотрудника по его году рождения.
Откройте проект приложения управления базой
данных «Отдел кадров».
2. Для создания вычисляемогдз поля
отключите соединение с базой данных (для компонента ТаЬ]е1 переведите свойство
Active в положение False).
3, Сделайте двойной щелчок по компоненте Table1, чтобы
вызвать Редактор Полей.
4.
В Редакторе Полей щелкните правой кнопкой мыши и н меню выберите
раздел New Fieds.
5.
Появится окно лобавления нового поля:
Нен iAeld
|
|
|
|
|
В разделе FieIds properties (свойства поля) вы должны
указать имя поля Тате). тип данных (Туре), и для строковых плов необходимо
задать Sjze (размер),
В нашем случае зададим имя поля Аде. тип данных —
Smallint,
После ввода всех лапных проверыге. переключилась ли группа
радиокнопок Field type на Calculated (это переключение делается автоматически).
Затем щелкните на ок и вы вернетесь в окно Редактора Полей. причем там
появиться новое поле Аде.
6, Включите соединение с базой данных
(;ыя компонента Тађ1е1 переведи•к свойство Асtive в положение True).
7.
Чтобы вычислить значение нового ноля. необходимо создать
процедуру вычислений. Для :угого выделите компонент ТаЬ!е1. а Инспекторе
объектов lnspector) на страницу событий (Events) и шелкнип• на собылии
0nCaIcFields. Это событие возникаст всякий раз. когда курсор (указатель записи)
перемешаелся в наборе данных от записи к записи (например. после выполнения
метолов Next. Lest и Т.д.. ПРИ передвижении по записям в 0BGrid врушую. при
инициализации набора данных. после фильтрации записей в наборе).
Необхолимо помнить. что в
этом обработчике значение может быть присвоено только ыч е ляс ом 10:1 лицу..
БД.
8.
Чтобы вычислить возраст по году рождения в обработчике этого
события надо написать: 2007
В этом
опсрајоре и Table1Year b.va[ue — значения полей Аде и Уеаг Ь соответственно.
11ранла. этот оператор рассчитан только на работу в 2007 году и в дальнейшем
его придется ежегодно менять. Можно добавить в обработчик пару строк. сделать
расчет возраста универсальным. Это делается следующим образом: procedure
TForm1.Table1CelcFields(OataSet: TDataSet); чаг
Уеаг, Month,
Оау : Word; begin
DecodeDate(Oate,
Year, Могф, Оау); value
Уеаг Епа;
В ттом коде
введены иерсменныс Year. Month. Оду для хранения текущего года. месяпа и дня.
Проиелура DeC0deOate преобразует текущую лату в целые значения месяца и дня. В
качестве первого аргумента этой процедуры указана функция Date. возврашающая
текущую дату, В результате переменная уеаг становится равной текущему году
(переменные Month и Day нам не нужны и определены только для того чтобы можно
было обратиться к процедуре 0ecodeDate'.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.