|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Имеется в наличии Visual FoxPro 9 SP2 Имеется в наличии таблица RZ.DBF , в ней 3 поля : D1 тип DATE (дата) D2 тип DATE (дата) R тип INTEGER (целое число) - разница (количество дней между датами D1 и D2) Вопрос: Необходимо посчитать количество дней между двумя датами ЗА ВЫЧЕТОМ ВЫХОДНЫХ ДНЕЙ (СУББОТ и ВОСКРЕСЕНИЙ). Заранее благодарен! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 14:55 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Тебе без выходных или без суббот и воскресений? Суббота может быть рабочим днем, праздничные дни - выходные. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 15:10 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
устроит без суббот и воскресений ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 15:17 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Особо не тестил, но вроде правильно работает Код: sql 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. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 15:24 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Написал тест для проверки Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Напутал немного, так точно считает. Начальный и конечный день входят в считаемый интервал. Считает исходя из того что всегда tdStart <= tdEnd Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 15:51 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Да дата1 всегда меньше даты2. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 16:19 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
ld1 = DATE(2017,1,1) ld2 = DATE(2017,1,8) && до lcPr = "20170101,20170102,20170103,20170104" && Праздники i = 0 DO WHILE ld1 < ld2 i = IIF(INLIST(DOW(ld1,2),6,7) OR DTOS(ld1)$lcPr,i,i+1) ld1 = ld1 + 1 ENDDO RETURN i ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 21:26 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
sg12, на интервалах гораздо больших чем неделя, например год+, будет тормозить зазря. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 21:42 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Dima Tsg12, на интервалах гораздо больших чем неделя, например год+, будет тормозить зазря. Будет или тормозит - сколько и насколько? Еще один цикл, для тормозов: ld1 = DATE(2017,1,1) ld2 = DATE(2022,1,8) && до lcPr = '20170101,20170102,20170103,20170104' && Праздники lnLen = ld2 - ld1 j = 0 FOR i = 1 TO lnLen j = IIF(INLIST(DOW(ld1,2),6,7) OR DTOS(ld1)$lcPr,j,j+1) ld1 = ld1 + 1 ENDFOR RETURN j ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 22:40 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Алгоритм по вычету праздников тоже беру. Спасибо большое ВСЕМ. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 08:20 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
По хорошему эта задача решается построением таблицы-календаря DATEIS_WORK13.01.17.T.14.01.17.F....... Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 08:28 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Я попробовал эту функцию вставить в событие LOAD главной формы, FoxPro пишет что нельзя функцию туда добавлять. А куда её добавить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 08:40 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
А в массив или в курсор можно же календарь такой загрузить и пользоваться?! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 08:42 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Есть производственный календарь на 2017 год с точными НЕрабочими датами. Лучше всего создать массив описать туда все даты и пользоваться. Последний вариант с запросом нравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 08:48 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
p672Я попробовал эту функцию вставить в событие LOAD главной формы, FoxPro пишет что нельзя функцию туда добавлять. А куда её добавить? делаешь MY_PROC.PRG, туда все свои функции и при старте проги Код: sql 1.
или просто CalcDays.prg а в нем Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 08:53 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Пожалуйста сделайте запрос на количество часов под такие таблицы: Этот вариант будет самый простой и лучший: Таблица рабочая RZ.DBF : DP тип DATE (дата начала) DK тип DATE (дата конца) R тип INTEGER (количество часов рабочих) (нужно посчитать и заполнить) Таблица календарь KA.DBF : D тип DATE (дата) H тип INTEGER (количество часов) ( обычный день 8 часов, сокращённый день 7 часов, НЕ рабочий день 0 часов или лучше вообще нет в таблице) и запрос в одну строчку.. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:00 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
p672Есть производственный календарь на 2017 год с точными НЕрабочими датами. Если есть с нерабочими, то сначала считаешь сколько всего дней Код: sql 1.
затем считаешь и вычитаешь нерабочие Код: sql 1.
только следи чтобы календарь полностью перекрывал период. p672Лучше всего создать массив описать туда все даты и пользоваться. Последний вариант с запросом нравится. Лучше курсор и индекс по DATE ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:00 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Не рабочие дни в календарь совсем НЕ буду заносить. В календаре будут только рабочие (8 часов) и сокращённые дни (7 часов). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:07 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Календарь на весь 2017 год есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:09 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
p672Пожалуйста сделайте запрос на количество часов под такие таблицы:... В RZ наверно какой-то RZ_ID уникальный есть, без него не получится запрос, с ним так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:11 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Вот так я собираюсь делать: SELECT * FROM KA INTO CURSOR KA1 SELECT RZ IN 0 select NOMDOK, sum(H) from RZ join KA1 on КА1.В between RZ.DP and RZ.DK group by NOMDOK NOMDOK - в RZ уникальное поле типа INTEGER - не повторяется. А что такое КА.В в запросе?! (это наверное имелось в виду КА.D) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:23 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
p672Вот так я собираюсь делать: SELECT * FROM KA INTO CURSOR KA1 SELECT RZ IN 0 select NOMDOK, sum(H) from RZ join KA1 on КА1.В between RZ.DP and RZ.DK group by NOMDOK NOMDOK - в RZ уникальное поле типа INTEGER - не повторяется. Если KA1 используется один раз, то он тут лишний, используй KA в запросе. В курсор копировать имеет смысл если тебе надо многократно его использовать. Чтение из курсора быстрее чем из расшаренной таблицы, особенно если она где-то в сети. И индекс не забывай Код: sql 1. 2.
p672А что такое КА.В в запросе?! (это наверное имелось в виду КА.D) Опечатка, на английский не переключился, КА.D ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 09:39 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
Мне нужно добавить в выражение запроса условие: Проставлять количество часов в RZ.H только в те записи у которых RZ.DK > RZ.DP Как грамотно это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 10:13 |
|
Посчитать количество дней между двумя датами за вычетом выходных дней
|
|||
---|---|---|---|
#18+
p672Мне нужно добавить в выражение запроса условие: Проставлять количество часов в RZ.H только в те записи у которых RZ.DK > RZ.DP Как грамотно это сделать? Не надо ничего добавлять, такие записи вообще не попадут в результат запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 10:45 |
|
|
start [/forum/topic.php?fid=41&msg=39383593&tid=1582002]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 405ms |
0 / 0 |