Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Теперь попробуем сформировать в таблице новое поле, не предусмотренное при ее создании, значение которого вычисляется на основании значений других полей записи. Подобные поля называются вычисляемыми полями (calculated fields). Пусть в нашем примере мы хотим добавить поле, вычисляющее возраст студента по его году рождения. Прежде, чем это делать, задайте для набора данных значение Active равным false, так как создавать новые поля можно только при закрытом соединении с базой данных. Затем сделайте двойной щелчок на ADOTable1,чтобы вызвать Редактор Полей. Щелкните в Редакторе Полей правой кнопкой мыши и во всплывшем меню выберите раздел New field (новое поле). Появится окно добавления нового поля:

В разделе Field properties (свойства поля) вы должны указать имя поля (Name) - в нашем случае назовем это поле Age, тип данных (Туре) - в нашем случае это Smallint, и для некоторых типов - размер (Size). Размер указывается для строк и других полей неопределенных размеров.

После ввода всех данных проверьте, переключилась ли группа радиокнопок Field type на Calculated (это переключение делается автоматически). Затем щелкните на ОК и вы вернетесь в окно Редактора Полей, причем там появится новое поле Age. Задайте для него в Инспекторе Объектов значение DisplayLabel равным «Возраст».

Вы ввели вычисляемое поле Age, но еще не указали программе, как его надо вычислять. Чтобы указать процедуру вычислений, выйдите из Редактора Полей, выделите ADOTable1,перейдите в Инспекторе Объектов на страницу событий и щелкните на событии OnCalcFields. Это событие наступает каждый раз, как надо обновить значение вычисляемых полей таблицы.

Чтобы вычислить возраст по году рождения, вы можете в обработчике этого события написать оператор:

 

ADOTable1Age->Value = 2010 - YearOf(ADOTable1year_b->Value);

 

В этом операторе ADOTable1Age->Value и ADOTable1year_b->Value -значения полей Age и Year_b соответственно. В этом операторе функция YearOf выделяет год из даты, передаваемой в качестве аргумента. Правда, этот оператор рассчитан только на работу в 2010 году, и в дальнейшем его придется ежегодно менять. Можно сделать расчет возраста универсальным. Это осуществляет следующий оператор:

 

ADOTable1Age->Value = YearOf(Date()) - YearOf(ADOTable1year_b->Value);

 

Текущая дата определяется функцией Date, возвращающей текущую дату типа TDateTime (этот тип используется в C+ +Builder для хранения дат и времени). Функция YearOf объявлена в заголовочном файле DateUtils.hpp. Так что в приложение необходимо добавить директиву:

#include <DateUtils.hpp>

Запустите приложение и посмотрите, как оно теперь выглядит:

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 452; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.