|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.01.2013, 02:51 | #1 |
Пользователь
Регистрация: 26.01.2010
Сообщений: 72
|
Рассчитать дату рождения
Здравствуйте!
Подскажите пожалуйста, столкнулся с такой проблемой. Имеется БД на FireBird компонент для доступа к ней из Delphi FIBDataset, Fibtransaction, Datasource , DBGrid. В БД имеется таблица TDeti c полями (ID(integer), DATEBIRTH(Date), FIO(varchar as 60), MarkARHIV(smallint)) необходимо сделать чтобы при достижении определенного возраста например 18 лет в поле MarkARHIV(smallint) перезаписывал параметр с 0 на 1. Подскажите как это можно правильно реализовать. Как в Delphi узнать возраст это я знаю через YearsBetween но если при запуске программы каждый раз проходить по набору данных данной функцией и перезаписывать то мне кажется что это будет очень долгий процесс можно это как то усовершенствовать или через запрос может как то это делается при выводе данных через. Последний раз редактировалось DIMASIKXXX32; 24.01.2013 в 03:06. |
24.01.2013, 03:31 | #2 |
Форумчанин
Регистрация: 25.07.2009
Сообщений: 533
|
Ну повесь job на БД. Пусть еженочно отрабатывает и проставляет.
Ежели конечно огнептиц держит job'ы. Если нет можно написать програмку которая будет запускаться планировщиком каждую ночь, можно службу нарисовать. Можно вьюху собрать в которой case'ом сделать твое поле 0/1 в зависимости от текущей даты. Можно процедурку написать которая будет запускаться программой при входе. Но тогда стоит смотреть запускалась ли она сегодня ранее. Т.к. может вызвать затуп при одновременной работе пользователей.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA) Последний раз редактировалось rdama; 24.01.2013 в 03:33. |
24.01.2013, 03:45 | #3 | |
Пользователь
Регистрация: 26.01.2010
Сообщений: 72
|
Цитата:
|
|
24.01.2013, 09:08 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
я бы сделал это поле ВЫЧИСЛЯЕМЫМ (либо в запросе, либо во вьюхе, не суть важно), причём не просто вычисляемым, но зависым от переданной даты. Тогда можно получить список на определённую дату с проставленным признаком. И, кстати, в этом же запросе я бы получал сразу и возраст на текущую дату. Проставление признака (как Вы это придумали) может сыграть с вами злую шутку - если понадобится сформировать выборку за прошлый месяц/год(а), все имеющиеся дети (которые были в прошлом) перестаную существовать.. но, конечно, решать Вам! Цитата:
подумайте, если, например, ребёнок родился 31 декабря 2000 года, 1 января 2001 года какой у него возраст? |
||
24.01.2013, 11:13 | #5 | |
Пользователь
Регистрация: 26.01.2010
Сообщений: 72
|
Цитата:
А может попробовать через YearSpan он выводит с дробной частью более точно просто обработать это дело Последний раз редактировалось DIMASIKXXX32; 24.01.2013 в 11:26. |
|
24.01.2013, 11:40 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
WHERE DATEADD(YEAR,18,DATEBIRTH)<CURRENT_ DATE - вернет всех кому больше 18 лет
WHERE DATEADD(YEAR,18,DATEBIRTH)=CURRENT_ DATE - вернет всех кому сегодня исполнилось 18 лет WHERE DATEADD(YEAR,18,DATEBIRTH)>CURRENT_ DATE - вернет всех кому еще нет 18 лет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
по дате рождения и текущей дате (день, месяц, год) определить сколько дней до дня рождения (код на ПАСКАЛЕ) | Николай1 | Помощь студентам | 1 | 16.02.2012 09:07 |
Рассчитать параметры | TURBOMAX | Помощь студентам | 0 | 12.02.2012 21:36 |
Рассчитать выражение | annosinceva | Фриланс | 11 | 26.03.2010 22:35 |
Как в профиле изменить дату рождения? | Cj_ | О форуме и сайтах клуба | 2 | 16.11.2009 17:08 |
программа, которая запрашивает дату рождения и печатает название соответствующего знака Зодиака | Алёночка2008 | Помощь студентам | 4 | 14.11.2008 10:49 |