powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Расчет выслуги лет
12 сообщений из 12, страница 1 из 1
Расчет выслуги лет
    #32370074
infocash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Буду очень признателен за помощь в расчете выслуги лет.
Задача на первый взгляд простая. Имеются поля с периодами работы "с ... и по"
и еще коэффициент, например 1,5 (то есть выслуга лет не всегда одинаковая).
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370098
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В запросе?
в годах с точностью до дня (может быть ошибка на текущем високосном годе на 0.003)
Код: plaintext
1.
2.
SELECT (DateDiff( "y" ,DateAdd( "yyyy" ,[СтажГ],[РаботаС]),[РаботаПо])/ 365 +[СтажГ])*[Коэфф] AS Стаж,
Int(DateDiff( "m" ,[РаботаС],[РаботаПо])/ 12 ) AS СтажГ
FROM Person;

В форме на обработке события - в принципе аналогично.
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370132
Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Z
Гость
давно было, сразу не вспомню...
нужно прибавить поправку на високосные года, т.е. добавить столько единиц, сколько было между годами [РаботаС],[РаботаПо] високосных лет.
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370134
Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Z
Гость
это пример расчета сколько полных лет - [BDay] - день рождения.
(правда это на transact-sql)
Код: plaintext
(floor((convert(money,datediff(day,[BDay],getdate())) /  365  - convert(money,((datepart(year,getdate()) - datepart(year,[BDay])) /  4 )) /  366 ))) 


смысл почти такой-же
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370156
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Z
Неверно определяешь, является ли год високосным
Условие високосности года:
(year mod 400 = 0) or ((year mod 100 <> 0) And (year mod 4 = 0))
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370165
Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Z
Гость
неа, вычислияю кол-во лет по 356 дней между двумя датами
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370187
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется, проще считать через месяцы, не заморачиваясь на промежуточных високосных, а ошибка может возникнуть на 1 день только когда последний год високосный и дата окончания работы после 29 февраля. Вероятность ее значимости весьма невелика, хотя и можно учитывать.
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32370938
infocash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за полезные советы.
Еще одна трудность заключается в том, что поля в данными для выслуги находятся в разных столбцах таблицы. Возможно ли осуществлять просчет определенного диапазона, а потом все диапазоны сложить.
Например, диапазон вида s1 ... po1 (a1 - коэффициент); s2.... po2 (a2) ....
s5... po5(a5) и еще несколько таких диапазона.
На выходе выслуга 5 лет 6 мес. 4 дня
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32371011
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как обычно, умиляюсь, когда вижу "еще одна трудность.." :)
В данном случае, это свидетельствует, видимо, о неправильной организации структуры БД, когда однородные данные разбросаны по разным полям, и за это, как всегда, приходится расплачиваться . Возможно, следовало бы вынести периоды работы в отдельную таблицу и связать ее с основной.

Расчет в виде 5 лет 6 мес. 4 дня... А как считают ваши кадровики с коэффицентом? Я сталкивался с этим пару раз и не мог признать их способы корректными, а как правильно, добиться не удалось.
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32372024
infocash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр , попробую объяснить, что у меня за база.
Существует програмная оболочка под DOS формирующая на основе заведенных в поля карточки данных базы в формате dbase IV, т.е. карточка это база (файл *.dbf). Например, vysluga.dbf. Как ни странно, но расчет выслуги производиться достаточно точно. Всегда больше на 1 день.
Постепенно я хочу отойти от старой программы и постепенно все отчеты делаю в Access, используя данные уже созданных баз.

Наши кадровики считают отчасти пользуясь этой программой.
Кстати, в ней есть формула в поле для просчета выслуги, но на она завязана на имена полей таблицы. Если будет интересно представлю эти "математические изыски".

Я считал, что в Access есть функции, которые могли бы коректно работать с датами, как часный случай расчет выслуги лет.
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32372030
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вопрос, можно ли было бы полагаться на эти функции. Вот для округления функции вроде бы есть, но оказалось, что существует штук 5 разных способов округления и стандартные функции не подходят, приходится писать свои. Может, и с выслугой лет так же?
...
Рейтинг: 0 / 0
Расчет выслуги лет
    #32372629
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
infocash Кстати, в ней есть формула в поле для просчета выслуги, но на она завязана на имена полей таблицы. Если будет интересно представлю эти "математические изыски".
Если можно, глянул бы.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Расчет выслуги лет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]