|
|
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Люди добрые. Есть две даты, надо сделать перекрестный запрос, со столбцами, в которые входят все рабочие дни за этот период, вне зависимости от наличия или отсутствия данных. PS. Владимиру Санычу. Сегодня ничего не успел сделать - весь день на ремонте, да еще на ночь глядя отчет новый подкинули. :( Завтра выложу очередную переработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 21:35 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Т.е. собственно вопрос: как бы это лучше сделать? Или только создавать временную таблицу, заполненную рабочими датами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 21:50 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
1. Вот получилось нечто. Недостатков куча, это только первый набросок. Таблица дней недели tabDays с одним полем целого типа по имени d. Заполнена числами от 1 до 7. Таблица недель tabWeeks с одним полем целого типа по имени w. Заполнена пока числами от 5390 до 5410, но ее можно программно пополнять по мере необходимости. Модуль: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. При этом TTT1 и TTT2 описаны как константы, но их надо превратить в переменные и задавать им значения перед запуском запроса. И сам запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 2. Да я-то ничего, меня от Интернета не отключают... :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 22:24 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч, я тебя люблю! (я в хорошем смысле этого слова:)) Большое спасибо. Пока сделал временную таблицу, которая заполняется на основании заданного периода. Но идея - зер гут! Завтра переделаю. Кстати, я доклал изменения (об изменениях). Спасиба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 23:32 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Это называется - был бы ты девушкой, расцеловал бы... Спасибо. :^) Изменения я видел. Все хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 23:43 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Что-то я перемудрил с делением на 7. Все гораздо проще. Функция WWW лишняя, а две последних функции должны выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2003, 00:04 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Последняя версия. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. Убраны пустые записи, которые иногда появлялись в начале и конце периода, и добавлена процедура для пополнения таблицы недель. Спать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2003, 00:27 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
2 ВС Раз уж ты предлагаешь заполнять временную таблицу в цикле, то можно заполнять не по неделям, а по дням (дополнение к условию: как правило, отчет будет подготавливаться за период, не превышающий один-два месяца, так что заполняться она будет достаточно быстро). Есть известная формула (всем, кроме меня, я помню только о ее существовании, и, примерно, о расположении книжки, в которой ее можно найти:)), которая позволяет по дате получать день недели. Получится в три строчки: For d = FirstDay to LastDay if ChudoFormula(d)<6 then InsertNewRec(d) next d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2003, 12:19 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Мои три строчки For i = WWW1 To WWW2 CurrentDb.Execute "INSERT INTO tabWeeks (w) SELECT " & Str(i) Next не длиннее. :^) Зато оборотов цикла у меня меньше в 7 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2003, 12:33 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Есть известная формула ..., которая позволяет по дате получать день недели Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2003, 14:26 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Еще одна чудо формула всего в два слова (читайте хэлп %-): Weekday(MyDate) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2003, 12:39 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Чисто теоретически. Стопроцентный правильный результат дает только индивидуальный календарь на каждого работника. Но этот календарь первоначально может быть заполнен некими стандартными для профессии, смены, категории работника, страны, значениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2003, 22:38 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Типа, у водопроводчика и у стоматолога одна и та же дата может оказаться разными днями недели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 11:30 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Разными днями недели вряд ли но в одной фирме может быть 1 апреля рабочим днем а во второй выходным по случаю дня дурака .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 16:58 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Понял. Это надо включить в мою функцию TTT. If праздник Then Null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 17:05 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
>If праздник Then Null Возьму эту строку девизом на следующие выходные!... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 19:55 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
:^) Будем здоровы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 19:55 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
2 Cat2 Действительно, в конце концов выяснилось, что куча народу работает по "выходным". Но, поскольку первоначальный отчет назывался "список отсутствующих работников", и он при отработке, скажем, за субботу выдавал список всех рабочих предприятия, кроме одного-двух дворников, решили оставить все как есть (бог с ними, с "праздник=null":)), а добавить отчет "список присутствующих работников", который работает не взирая на выходные и праздники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 21:13 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
>Действительно, в конце концов выяснилось, что куча народу работает >по "выходным". Но, поскольку первоначальный отчет назывался "список >отсутствующих работников", и он при отработке, скажем, за субботу >выдавал список всех рабочих предприятия, кроме одного-двух дворников, >решили оставить все как есть (бог с ними, с "праздник=null":)), а добавить >отчет "список присутствующих работников", который работает не взирая на >выходные и праздники. я достаточно долго занимался разработкой систем учета рабочего времени вот мое мнение: 1. Должен быть учет графика работы фирмы учет + празники - выходные дни, перенесенные на будни на основе таблички исключений формировать месячный график и рассчитывать фонд рабочего времени. 2. Должен быть персональный учет по сотруднику -можно учитывать все с точностью до часа кто и чем занимается, по какому проекту, в командировке ли, на больничном итд. - или построить учет на исключениях из правил: не дороаботал 2 часа такой-то сотрудник - в табличку его, переработал - в табличку с указанием что переработка и сколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 09:20 |
|
||
|
Список рабочих дней
|
|||
|---|---|---|---|
|
#18+
Я тут на досуге "нарисовал" запрос, который генерирует последовательные даты (у меня 1000,но это легко изменить),начиная с некоторой заданной Код: plaintext 1. 2. 3. Запрос требует наличия вспомогательной таблицы Nums ,в которой хранятся цифры от 0 до 9 Аналогичную идею для SqlServer (но без использования вспомогательной таблицы) можно найти на форуме по SqlServer (лень искать ссылку, но кто захочет ,тот найдет) Может быть кому нибудь пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 13:07 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32195560&tid=1680505]: |
0ms |
get settings: |
7ms |
get forum list: |
23ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 366ms |

| 0 / 0 |
