Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вычисление трудового стажа на Access 97

Автор: dneprcomp
Дата сообщения: 27.05.2005 09:13
serjk
Ну и почему все же сразу не использовать нормальные функции и избежать гемороя?
Автор: serjk
Дата сообщения: 27.05.2005 10:04
Хорошо, конечно, все сразу делать правильно и как надо изначально, но когда тебя стадо петухов клюет в ж..пу, и требуют сразу и сейчас, бывает делаешь на первых порах, чтоб просто работало.
Потом, в спокойной обстановке, делаешь как надо.
Автор: serjk
Дата сообщения: 08.06.2005 22:54
Возник следующий вопрос - как организовать запрос следующего рода:
Берется диапазон дат, например от 01.01.01 до 05.05.05. Нужно узнать, изменилась ли %надбавка в этом диапазоне времени.
Автор: PaRser79
Дата сообщения: 10.06.2005 10:59
Если вернуться к вашему вопросу: "каким образом подсчитать в Access 97 стаж работы сотрудника", то возникает встречный вопрос: А какой стаж вы подсчитываете - общий стаж или стаж работы в вашей организации? И в том и другом случае ответ ТекущаяДата - ДатаПриёмаНаРаботу не всегда будет верен, потому что не учитывает перерывов в стаже. Человек мог уволиться из вашей организации, поработать год или несколько месяцев в другой организации и вернуться (или просто быть безработным). Чтобы учитывать перерывы, нужно вести учёт периодов работы по трудовой книжке и суммировать количество дней в периодах
ДатаПриёма1 ДатаУвольнения1
ДатаПриёма2 ДатаУвольнения2
ДатаПриёма3 ДатаУвольнения3
ДатаПриёма4 -- (использовать текущую дату)

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


Цитата:
Берется диапазон дат, например от 01.01.01 до 05.05.05. Нужно узнать, изменилась ли %надбавка в этом диапазоне времени.

Не совсем понятен вопрос, но выборку между датами можно сделать так:
WHERE ПолеДаты Between #1/1/1# And #5/5/5#)
Дата должна быть в американском формате: mm/dd/yyyy

Рекомендую хороший форум по Access'у: http://www.sql.ru/forum/actualtopics.aspx?bid=4
Автор: serjk
Дата сообщения: 10.06.2005 13:04

Цитата:
возникает встречный вопрос: А какой стаж вы подсчитываете - общий стаж или стаж работы в вашей организации?

В данном случае - безпрерывный.


Цитата:
Не совсем понятен вопрос, но выборку между датами можно сделать так:
WHERE ПолеДаты Between #1/1/1# And #5/5/5#)
Дата должна быть в американском формате: mm/dd/yyyy

Попробую объяснить подробнее. У каждого человека, в зависимости от стажа начисляются надбавки. Они перерасчитываются через определенное кол-во лет. Обычно через пять лет. Отдел кадров хочет задать через форму временной интервал, допустим с 01.01.01 по 05.05.05 и смотреть в отчете - изменился ли у кого процент надбавки и с какой на какую.
Автор: PaRser79
Дата сообщения: 14.06.2005 09:43
Предполагаю, что у в вашей базе есть таблицы:
"Сотрудники"
КодСотрудника
ФИО

"Надбавки"
КодСотрудника
ВеличинаНадбавки
ДатаУвеличения

Составляете запрос на выборку, которая будет источником данных для отчёта:

Код: SELECT Сотрудники.ФИО, Надбавки.ВеличинаНадбавки, Надбавки.ДатаУвеличения
FROM Сотрудники LEFT JOIN Надбавки ON Сотрудники.КодСотрудника = Надбавки.КодСотрудника
WHERE (((Надбавки.ДатаУвеличения) Between #1/1/2001# And #12/31/2003#));
Автор: serjk
Дата сообщения: 14.06.2005 17:27
Разрешите еще вас помучать вопросами.
Есть запрос, вычисляющий надбавку за выслугу:

SELECT people_kartochka.Прізвище, people_kartochka.[Им'я], people_kartochka.[По батькові], IIf([Вислуга]<#1/1/2001#,0,IIf([Вислуга]<#1/1/2002#,5,IIf([Вислуга]<#1/1/2005#,10,IIf([Вислуга]<#1/1/2010#,20,IIf([Вислуга]<#1/1/2015#,25,IIf([Вислуга]<#1/1/2020#,30,IIf([Вислуга]<#1/1/2025#,35,IIf([Вислуга]>#1/1/2025#,40)))))))) AS [Надбавка за вислугу], people_kartochka.[Дата нарахування]
FROM people_kartochka;

Нужно добавить в запрос следующее:
В зависимости от размера надбавки за выслугу, вычисленное выше и даты нарахування, вычислить следующую дату перерасчета (дата перерахування).
Например, надбавка 10%; дата нарахування 01.01.01; дата перерахування должна быть = Дата нарахування + 5лет, надбавка 20%; дата нарахування 01.01.03; дата перерахування должна быть = Дата нарахування + 10лет.
Данные перерахування вывести в форму, источником записи которой явл. таблица people_kartochka.
Автор: serjk
Дата сообщения: 15.06.2005 07:15
Сделал. Вопрос можно опустить, хотя интересно как сделали бы люди.
Автор: PaRser79
Дата сообщения: 15.06.2005 09:05
Как бы сделал я?
Cделал бы таблицу "СписокНадбавок", в которую занёс величину надбавки и стаж, за который она полагается:
ПроцентНадбавки СрокМин СрокМакс
Автор: serjk
Дата сообщения: 16.06.2005 21:47
Спасибо за ответ. Ваш вариант с использованием DateDiff("yyyy"....) действительно лучше, о нем запамятовал, хотя недавно в хелпе просмотривал по этой фунции информацию.

Страницы: 12

Предыдущая тема: Какие программные продукты часто использует программист


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.