может кто реализовывал?
может кто реализовывал?
Здравствуйте.
такой вот вопрос возник.
Есть таблицы, где имеются приказы (например) по контингенту сотрудников.
В шапке номер приказа, идентификатор подразделения.
В теле - ид сотрудника и с какой он даты числится в пожразделении.
далее идут приказы изменения статусов.
Например в первом приказе в подразделении №1 на 01.01.2009 имеется сотрудник №1
Далее идет приказ об увольнении из подразделения №1 с 10.01.2009
потом идет приказ о приеме в подразделение №1 от 20.01.2009.
потом увольнение.
потом идет приказ о приеме в подразделение №2 от 30.01.2009.
Каждый тип приказа имеет свой идентификатор.
хотелось бы как можно проще получать информацию в каком подразделении какой сотрудник находится на определенную дату .
допустим за определенный период сотрудник был уволен и принят 2-4 раза . как получить где он находтся и его статус на определенную дату.
Спасибо
такой вот вопрос возник.
Есть таблицы, где имеются приказы (например) по контингенту сотрудников.
В шапке номер приказа, идентификатор подразделения.
В теле - ид сотрудника и с какой он даты числится в пожразделении.
далее идут приказы изменения статусов.
Например в первом приказе в подразделении №1 на 01.01.2009 имеется сотрудник №1
Далее идет приказ об увольнении из подразделения №1 с 10.01.2009
потом идет приказ о приеме в подразделение №1 от 20.01.2009.
потом увольнение.
потом идет приказ о приеме в подразделение №2 от 30.01.2009.
Каждый тип приказа имеет свой идентификатор.
хотелось бы как можно проще получать информацию в каком подразделении какой сотрудник находится на определенную дату .
допустим за определенный период сотрудник был уволен и принят 2-4 раза . как получить где он находтся и его статус на определенную дату.
Спасибо
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: может кто реализовывал?
STFW "Периодические атрибуты".AndrewVL писал(а):хотелось бы как можно проще получать информацию в каком подразделении какой сотрудник находится на определенную дату .
Заводишь таблицу истории сотрудничества с полями:
ссылка на сотрудника
ссылка на подразделение
дата приёма
ссылка на приказ приёма
дата увольнения (default 9999 год)
ссылка на приказ увольнения
Эта таблица ведётся триггерами на таблице приказов.
Как результат запрос получается очень простым: select подразделение from эта таблица where нужная дата between дата приёма and дата увольнения.
Re: может кто реализовывал?
нарисовал такие триггера
на удаление пока еще не придумал
Что скажете? Мож где косяк?
Код: Выделить всё
CREATE OR ALTER trigger table_ai0 for table
active before insert position 1
as
declare variable table_id integer;
declare variable from_date date;
begin
select c from table where table.thing_id = new.thing_id
and new.from_date between table.from_date and table.to_date into :table_id;
update table set table.to_date = new.from_date-1 ,table.next_id = new.c
where c = :table_id;
if (exists (select c from table where table.thing_id = new.reating_orders_all_id
and table.to_date <= new.from_date-1 )) then
end
Код: Выделить всё
CREATE OR ALTER trigger table_bu0 for table
active before update position 0
AS
declare variable table_id integer;
begin
if (new.to_date <> old.to_date) then
begin
select c from table where table.thing_id = new.thing_id
and new.to_date+1 between table.from_date and table.to_date into :table_id;
update table set table.to_date =
(select from_date-1 from table where from_date < new.to_date)
where c = :table_id;
end
end
на удаление пока еще не придумал
Что скажете? Мож где косяк?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: может кто реализовывал?
На мой взгляд эти триггеры вообще никак с первым постом не стыкуются. И даже компилироваться откажутся из-за отсутствия имени таблицы.
Re: может кто реализовывал?
вроде разобрался.
но другой вопрос возникает.
есть таблица движений.
дата начала - дата окончания нахождения человека в определенном подразделении.
но на основании этой таблицы каждый день формируются списки.
т.е.
ИД_ПОДРАЗДЕЛЕНИЯ, ИД_СОТРУДНИКА и прочие атрибуты
вопрос. Как быть если сотрудник был в подразделении №1 на 01.01.2010. списки сформировались.
потом его перевели 10.01.2010 в другое подразделение (№2). но ввели приказ только 01.02.2010. естественно с датой начала действия 10.01.2010
а списки формировались в период с 10.01.2010 по 01.02.2010. т.е. получается на момент формирования списков он числится в подразделении №1.
и на 31.01.2010 он числится в подразделении №1. пока не ввели задним числом приказ.
В общем - как в таком случае списки синхронизируются?
Хотелось бы в таблицах списков в шапке указывать только дату. а в теле - ссылки на таблицы движения.
По если документы вводятся задним числом - так не получится.
но другой вопрос возникает.
есть таблица движений.
дата начала - дата окончания нахождения человека в определенном подразделении.
но на основании этой таблицы каждый день формируются списки.
т.е.
ИД_ПОДРАЗДЕЛЕНИЯ, ИД_СОТРУДНИКА и прочие атрибуты
вопрос. Как быть если сотрудник был в подразделении №1 на 01.01.2010. списки сформировались.
потом его перевели 10.01.2010 в другое подразделение (№2). но ввели приказ только 01.02.2010. естественно с датой начала действия 10.01.2010
а списки формировались в период с 10.01.2010 по 01.02.2010. т.е. получается на момент формирования списков он числится в подразделении №1.
и на 31.01.2010 он числится в подразделении №1. пока не ввели задним числом приказ.
В общем - как в таком случае списки синхронизируются?
Хотелось бы в таблицах списков в шапке указывать только дату. а в теле - ссылки на таблицы движения.
По если документы вводятся задним числом - так не получится.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: может кто реализовывал?
Пару раз лишить премии отдел кадров и ввод приказов задним числом прекратится как по волшебству.
Re: может кто реализовывал?
это то понятно
Но все же.
Но все же.
Re: может кто реализовывал?
попытка автоматизировать хаос? зачем тогда автоматизация...