Помогите с Access!!!
Вообщем нужно реализовать в Access процедуру автоматического создания графика дежурств на один месяц по схеме "сутки через двое" или "сутки через трое".
При этом необходимо учесть, что дату отсчета этого графика вводит пользователь.
Т.е. есть например:
-Иванов-
-Петров-
-Сидоров-
Указываем дату начала дежурств, например: 1.04.07.
Таким образом,
-Иванов- дежурит 1.04.07
-Петров- дежурит 2.04.07
-Сидоров- дежурит 3.04.07
а дальше соотвественно 4.04.07 снова Иванов... и т.д.
Может кто сталкивался с подобным? Буду весьма признателен за помощь!
Вообщем нужно реализовать в Access процедуру автоматического создания графика дежурств на один месяц по схеме "сутки через двое" или "сутки через трое".
При этом необходимо учесть, что дату отсчета этого графика вводит пользователь.
Т.е. есть например:
-Иванов-
-Петров-
-Сидоров-
Указываем дату начала дежурств, например: 1.04.07.
Таким образом,
-Иванов- дежурит 1.04.07
-Петров- дежурит 2.04.07
-Сидоров- дежурит 3.04.07
а дальше соотвественно 4.04.07 снова Иванов... и т.д.
Может кто сталкивался с подобным? Буду весьма признателен за помощь!
А не лучше ли это организовать в MS Project? Там, если не ошибаюсь что-то подобное как раз и используется. Да и с Access можно будет потом почти без проблем связать :)
да дело в том, что это все нужно сделать используя стандартные средства MS Access.
Будь моя воля, я бы на Delphi это все сделал, но так нельзя... вот и сижу голову ломаю... ну никак у меня это не получается :(
Вот у меня как раз и не получается организовать это автоматический расчет... я уже запутался, то ли мне это делать как запрос, или как обновление таблицы (но при обновлении нужно иметь уже какие-то данные в таблице...).
Может есть акие предложения как организовать? Может кто подскажет какой запрос сделать и как?
2) Определяешь какое количество людей у тебя будет работать
3) В цикле перебираешь даты с начальной до конечной. При каждой итерации меняешь рабочего на следующего. Как только количество рабочих исчерпано, сбрасываешь их счетчик на первый(нулевой), а даты продолжаешь перебирать.
Смысл примерно такой(это всего лишь схема, расписанная в коде).
Dim dFirst, dLast as Date
Dim current, count as Integer
..
current = 0
Do While (dFirst <= dLast)
..
men(current).DateToWork = dFirst
If (current = count - 1) Then
current = 0
Else
current = current + 1
EndIF
dFirst = dFirst + 1
..
Loop
..
Дальше уже смотри по ситуации:
Если у тебя работники хранятся в таблице, то просто проходишься по таблице, а как только таблица заканчивается возвращаешься к первой записи.
Вообщем, ньюансов море, зависящих от конкретной реализации.
У тебя должна существовать таблица с расписанием рабочих типа:
РАСПИСАНИЕ(Код, Работник_Код, Дата)
Туда и добавляй записи при генерации расписания. Если таблицу возможно придется редактировать - это уже другой вопрос - создавай для этого отдельную форму, ну или как там тебе нужно это организовать..
Может есть акие предложения как организовать? Может кто подскажет какой запрос сделать и как?
Еще раз спрошу я - проблема в чем? Весе что тебе нужно - организовать справочник сотрудников, справочник календарь и собственно таблицу графика которая будет устанавливать соответствие. Как вариант.
Не очень понятно - что такое
имеется ввиду что он должен получить свой график от указанной даты или ...?
Далее пользователь 2 уже может указать свою дату, например 1.04.07...
график от пользователя 1 при этом не нужно сохранять, просто его показать и все. также и от пользователя 2.
Проблема в том, что я никак немогу составить правильный алгорит... я понимаю, что если составлять график по схеме "сутки через двое", то это к введеной дате прибавлять 4 дня: если все я правильно понимаю, то нужно сделать так:
Таблица: "График": (1.04.07 дату указал пользователь)
-------------------------------------------------------
| Фамилия | День1 | День2 | День3 |
-------------------------------------
| Иванов |1.04.07|4.04.07 |7.04.07|
-------------------------------------
| Петров |2.04.07|5.04.07 |8.04.07|
-------------------------------------
| Сидоров |3.04.07|6.04.07 |9.04.07|
-------------------------------------
При этом, указывается дата только отсчета, в данном случае это 1.04.07, остальные даты расставляються автоматически.
Как такое мне организовать? или может быть есть варианты проще?
я бы делал таблицу:
ид пользователя | Ид даты
а таблица соответственна связанна вторичными ключами со справочниками пользователей и календарем. Тогда вопервых достаточно просто ввести допустим праздничные дни или какую нибуть херню если понадобится. Но это так мысли. А расчет даты делаешь например запросом через dateadd или как она там.
я бы делал таблицу:
ид пользователя | Ид даты
а таблица соответственна связанна вторичными ключами со справочниками пользователей и календарем. Тогда вопервых достаточно просто ввести допустим праздничные дни или какую нибуть херню если понадобится. Но это так мысли. А расчет даты делаешь например запросом через dateadd или как она там.
Судя по вот этому:
..
-------------------------------------------------------
| Фамилия | День1 | День2 | День3 |
-------------------------------------
| Иванов |1.04.07|4.04.07 |7.04.07|
-------------------------------------
| Петров |2.04.07|5.04.07 |8.04.07|
-------------------------------------
| Сидоров |3.04.07|6.04.07 |9.04.07|
-------------------------------------
..
и вот этому:
..
график от пользователя 1 при этом не нужно сохранять, просто его показать и все
..
аффтор не совсем понимает, что такое БД и с чем ее едят!!