Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
1
MS Access

Автоувеличение стажа, возраста, полей с датой

29.05.2017, 07:43. Показов 1526. Ответов 18

Author24 — интернет-сервис помощи студентам
Доброе утро. Использую Delphi xe8. База данных acces, выводятся данные в dbgrideh, есть такие поля как : дата рождения, возраст, стаж.
к примеру есть дата рождения 12.12.xxxx , нужно сделать так, чтоб в тот день (12),месяц(12),возраст(хх) увеличивался на +1. А со стажем ежедневное увлечение происходило. Не могу осуществить данный функционал. Помогите..
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2017, 07:43
Ответы с готовыми решениями:

Вывести список сотрудников пенсионного возраста на сегодняшний день с указанием стажа работы
Есть созданный файл, который содержит сведения о сотрудниках института. Структура записи: фамилия...

Получить список сотрудников пенсионного возраста на сегодняшний день с указанием стажа работы
Написать программу, которая позволяет получить следующую информацию: список сотрудников пенсионного...

Автоувеличение ID
У меня есть такое добавление в таблицу. Ключевое поле Id типа int protected void...

Вычисление возраста сотрудника и расчёт среднего возраста
Народ ПОМОГИТЕ пожалуйста!!! В Access не силён (на уровне пользователя). Имеется база данных с...

18
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
29.05.2017, 08:01 2
Цитата Сообщение от lambre72 Посмотреть сообщение
А со стажем ежедневное увлечение происходило.
стаж в днях считаете? Такая бешеная текучка? А если вашу базу в воскресенье никто не откроет? Кто счетчик стажа крутить будет. А если в понедельник раз сто программу запустят? Стаж на 100 дней + ?
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 08:25  [ТС] 3
YuryK, я вот не знаю как лучше стаж считать. просто в днях или день,месяц,год. На счет счетчика, может тогда просто сделать кнопку. которая будет обновлять данные, или в фильтрах. не знаю, как лучше. есть идеи?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
29.05.2017, 08:30 4
Идея проста как мир, но вам явно не понравится: стаж и возраст просто считать (от даты приема на работу и даты рождения) на любую заданную дату и отображать в том виде, какой требуется в той или иной форме.
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 08:40  [ТС] 5
YuryK, таким методом я смогу автоматом выбить стаж при добавлении данных. Как я потом в базе обновлю:? а и да, если нужно будет сделать пару фильтров, там скажем у кого стаж менее 2 лет и более 2 лет. что тогда? из-за отсутствия update будут ложные данные выбиваться.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.05.2017, 08:56 6
издеваетесь??
напишите себе на бумажке

Иванов 2010
Петров 2011
Сидоров 2016

теперь у вас есть БД и таблица в ней
сможете SQL запросом в мозг выбрать тех, у кого стаж больше 2 лет ??
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 09:01  [ТС] 7
krapotkin, все бы ничего, но: из-за отсутствия update будут ложные данные выбиваться.^^
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.05.2017, 09:15 8
конкретный вопрос
дайте конкретный ответ
в приведенной таблице какие ложные данные у вас выбились?
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 09:59  [ТС] 9
krapotkin, вы наверно не поняли меня.
напишите себе на бумажке:
Иванов 2010
Петров 2011
Сидоров 2016.
Выбор или фильтр из базы по этим данным сделать не проблема. если вы внимательно читали ответы до этого, и название топика, то должны были заметить. Что проблема состоит в том, что мне нужно чтоб возраст и стаж увеличивались. возраст в день рождения, стаж либо каждый день, или же после нового года, мне что-то типо проверки нужно или цикла на обновления этих данных. Так как не могу сделать этого сам, пишу вам. Надеюсь на помощь и понимание!!!!!!!! а и да, про ложные данные. добавил я человека указал возраст,стаж. после чего мне нужно выдать данные о нем(спустя год) у него возраст тот же, и стаж года не начислен. вот в чем моя проблема.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.05.2017, 10:08 10
еще
раз
не
надо
это
писать
в базу!

это чистой воды вычисляемые при запросе поля

Добавлено через 1 минуту
если требуется делать какие-то записи о начислениях, это проводится в плановом порядке
для этого достаточно разработать это порядок
программирование тут абсолютно сбоку
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 10:13  [ТС] 11
krapotkin, мне нужно УВЕЛИЧЕНИЕ ВОЗРАСТА, И СТАЖА. так же изменение значения в этом поле. если это не возможно, то как вы и сказали, возможно нужен запрос.
есть у меня поля дата рожд. 1992 и возраст. очевидно что прочитать возраст так 2017-1992 вот он возраст. мне апдейт нужен. чтоб в 2018 он выдал уже в возрасте не 25, а 26. Порядок конечно же осуществляется не в среде программирования??
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.05.2017, 10:26 12
да блин. все. больше не буду повторять
поле стаж не хранится в базе, а в программу поступает в результате SQL-запроса (SELECT) на любую дату.

если по стажу добавляются какие-то записи, например, при достижении 50 лет, работник должен быть занесен в таблицу "на расстрел", то это плановая разовая операция. И для ее совершения требуется регламент. Например, ежедневно запускается скрипт, опять же ВЫЧИСЛЯЮЩИЙ стаж и делающий записи в другую таблицу
0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,375
29.05.2017, 11:48 13
Ну ладно. Вот вам два варианта:
Первый:
Delphi
1
2
Old:=Year(Now) - Year(BirthDay);
Carrier:=Year(Now) - Year(IncomeDay);
Второй:
SQL
1
2
UPDATE Person SET OLD=YEAR(Now) - YEAR(BirthDay)
UPDATE Worker SET Carrier=YEAR(Now) - YEAR(IncomeDay)
Решайте сами, что вам удобнее.
1
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 12:58  [ТС] 14
Пытливый,
SQL
1
2
adoquery1.SQL.Text:=    'update test SET OLD=YEAR(Now) - YEAR(BirthDay)'   ;
adoquery1.SQL.Text:=    'UPDATE test SET Carrier=YEAR(Now) - YEAR(IncomeDay)' ;
слетает база данных. old=возраст , BirthDay=др, Carrier=стаж , IncomeDay=дата принятия. все верно?
0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,375
29.05.2017, 14:38 15
Да, все верно и раз у вас одна таблица, то можно одним запросом:
SQL
1
UPDATE test SET OLD=YEAR(Now) - YEAR(BirthDay),Carrier=YEAR(Now) - YEAR(IncomeDay)
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 16:31  [ТС] 16
Пытливый, не как не могу видимо верно написать. написал данный код на баттон. крашится база. помоги
0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,375
29.05.2017, 16:39 17
Лучший ответ Сообщение было отмечено lambre72 как решение

Решение

Я же не знаю вашего кода, который ботоны крошит. Должно быть так:
Delphi
1
2
3
4
AdoQuery1.Connection := AdoConnection1;
AdoQuery1.SQL.Text := 'UPDATE test SET OLD=YEAR(Now) - YEAR(BirthDay),Carrier=YEAR(Now) - YEAR(IncomeDay)
';
AdoQuery1.ExecSQL;
1
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
29.05.2017, 16:42 18
Цитата Сообщение от Пытливый Посмотреть сообщение
';
0
0 / 0 / 2
Регистрация: 22.06.2015
Сообщений: 22
29.05.2017, 21:05  [ТС] 19
Цитата Сообщение от Пытливый Посмотреть сообщение
ботоны кроши
xD button

Добавлено через 3 часа 32 минуты
Пытливый, все работает спасибо!!!!
0
29.05.2017, 21:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2017, 21:05
Помогаю со студенческими работами здесь

Как сравнить правильно в MySQL запросе поле с датой с текущей датой?
Всем привет! Как сравнить правильно в mysql запросе поле с датой с текущей датой? Мне просто...

SQL: найти разницу между текущей датой и датой заключения договора
Здравствуйте! Помогите, пожалуйста, с запросом SQL. Есть база данных в Access. В С++ Builder 6...

Как заполнить промежуток между начальной датой и конечной датой в пустой таблице?
Возможно ли в MS Accsee в пустой таблице заполнить автоматически промежуток(период) между...

Разность между текущей датой и датой последней покупки
Помогите пожалуйста. Как можно посчитать давность покупки?как это запросом написать? (это вообще...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru