Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 23.03.2016
Сообщений: 81

Вычислить дату окончания отпуска

07.04.2016, 20:23. Показов 5577. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые знатоки аксеса. Есть таблицы "Сотрудники", "ПраздничныеДни" и форма "СотрудникиОтпуск", известно дата начала отпуска, количество рабочих дней и праздничные дни текущего года. Надо посчитать дата конца отпуска. Рабочие дни недели считать с понедельника до пятницы. Файл прилагаю, заранее благодарю.
Вложения
Тип файла: rar Otpusk.rar (30.0 Кб, 24 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2016, 20:23
Ответы с готовыми решениями:

Подсчитать, сколько дней отпуска сотрудник уже отгулял на сегодняшнюю дату
Добрый день, подскажите как подсчитать сколько дней отпуска сотрудник уже отгулял на сегодняшнюю дату. Есть два периода отпусков по 14...

При наличии номера недели получить дату начала и дату окончания этой недели
Подскажите как можно решить следующую задачу. У меня есть номер недели например :не деля 38. Мне нужно получить дату начала и...

Отражение Дополнительного Отпуска В Документе "отпуска Организаци
Здравствуйте! Подскажите, пожалуйста, как отразить дополнительный отпуск в документе "отпуска организаций" в УПП 8.2. Когда я...

40
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
08.04.2016, 08:33
Цитата Сообщение от avetis62 Посмотреть сообщение
...известно дата начала отпуска, количество рабочих дней и праздничные дни...
Примерчик не открылся, но наверное и сами в запросе в режиме конструктора сможете вставить сие выражение в свободное поле запроса.

ДатаВыходаНаРаботу: (DateAdd("d";28;[ДатаНачалаОтпуска]))+[ДнейПраздничных]

Имена полей естественно нужно указать свои.
Количество дней отпуска взял = 28 или же если это поле и количество дней меняется и указывается в поле то

ДатаВыходаНаРаботу: (DateAdd("d";[ДнейОтпуска];[ДатаНачалаОтпуска]))+[ДнейПраздничных]
0
1 / 1 / 0
Регистрация: 23.03.2016
Сообщений: 81
08.04.2016, 09:13  [ТС]
Вот файл в формате access 2003
Вложения
Тип файла: rar Otpusk.rar (20.1 Кб, 14 просмотров)
0
1 / 1 / 0
Регистрация: 23.03.2016
Сообщений: 81
08.04.2016, 10:00  [ТС]
И еще, отпуск выдается по количеству рабочих дней, а не календарных. Рабочие дни-это с понедельника до пятницы.
Прошу учитывать, что праздничные дни могут совпадать с выходными днями недели.
0
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
08.04.2016, 11:15
Цитата Сообщение от avetis62 Посмотреть сообщение
...Прошу учитывать...
А сами что, не можете еще поле с количеством выходных прибавить?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
08.04.2016, 13:10
Странно, у нас отпуск считают календарными днями, а не рабочими.
0
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
08.04.2016, 13:32
Цитата Сообщение от alvk Посмотреть сообщение
...у нас отпуск считают календарными днями, а не рабочими...
Это где как. Всякое бывает.
Я и так и так и даже этак встречал.
У военных помнится, - Суббота как рабочий день считается.
0
1 / 1 / 0
Регистрация: 23.03.2016
Сообщений: 81
08.04.2016, 19:41  [ТС]
Я сделал, так как Вы писали, но неправильно считает. Может быть Вы создаете файл, у меня что-то неполучается
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
08.04.2016, 20:01
Цитата Сообщение от alvk Посмотреть сообщение
Странно, у нас отпуск считают календарными днями, а не рабочими.
Вас... как бы слово пополиткореектнее подобрать... наказывают где только могут и как хотят.
0
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
08.04.2016, 20:05
Цитата Сообщение от avetis62 Посмотреть сообщение
...Может быть Вы создаете файл...
Согласен, даже для меня сложновато.
Для интереса, уже с утра создаю.
Запросами выявил, сикока в каком месяце ВсегоДней, скока ДнейРабочих, сколько - Выходных.
Основная проблемка вскочила, для подсчета праздничных дней попадающих на выходные.
Чей та ни как не могу придумать, как их автоматически не плюсовать, если совпадают.
Идю пока по простому пути, типа в зависимости от совпадений на пальцах вычисляю сколько праздников не попадает на выходные.
Пока вытворил только это.
Скока займет времени на автоматизацию не знаю (может даже пару месяцев, книжки буду читать), т. к. моё Кунг-Фу не на столько мощное, как хотелось бы.
Пока есть вот только это, может сами или кто из знающих чего подскажет.
Вложения
Тип файла: rar Отпуска-03.rar (86.1 Кб, 16 просмотров)
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
08.04.2016, 20:05
рабочий день у многих разный , как и график работы
и вариантов столько --что со счета собъешься
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
08.04.2016, 20:36
Задача интересная оказалась. Попробовала сделать одним запросом.

SQL
1
2
3
4
5
6
7
8
9
10
SELECT Сотрудники.Код, 
  Сотрудники.НачалаОтп, 
  IIf(Weekday([НачалаОтп],2)<6,6-Weekday([НачалаОтп],2),0) AS StartWeekLen, 
  ([Кол-воРабДней]-[StartWeekLen])\5 AS FullWeeks, 
  ([Кол-воРабДней]-[StartWeekLen]) MOD 5 AS LastWeekLen, 
  [НачалаОтп]+[StartWeekLen]+7*[FullWeeks]+[LastWeekLen] AS ПредпДата,          
  DCount("Код","ПраздничныеДни","Weekday(Дни,2)<6 AND Дни>=" & CLng([НачалаОтп]) & " AND Дни<" &   CLng([ПредпДата])) AS Праздники, 
  [Праздники]+2*(([LastWeekLen]+[Праздники])\5) AS Поправка, 
  [ПредпДата]+[Поправка] AS ОкончательнаяДата
FROM Сотрудники;
Все бы хорошо, но может оказаться ситуация, что при удлинении отпуска на число праздников захваывается следующий праздник.
Еще подумаю, как этот момент обойти.

Добавлено через 3 минуты
Вообще какие требования к методу решения - это должен быть один запрос, может быть несколько запросов, выполняемых последовательно, может быть код vba?
0
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
08.04.2016, 22:23
Цитата Сообщение от texnik-san Посмотреть сообщение
...Попробовала сделать одним запросом....
Ну да, тоже так думаю.
Но так как Боги нашего раздела, - по любому всегда с нами, то чудится вопрос будет разрешим.
0
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.04.2016, 03:05
Такие задачи удобно и эффективно решать с помощью таблицы-календаря, где есть все даты и логическое поле нерабочих дней - выходные, праздники. Я ввел в БД такую таблицу Календарь, запросом обновил ее из т.ПраздничныеДни на нерабочие дни праздников. Также в ней отмечены как выходные субботы и воскресенья.

Вычисление конца отпуска ведется в публичной функции calcOtpusk в Module1. В запросе Отпуск введена эта функция. И этот запрос сделан источником формы СотрудникиОтпуск. В запросе исключены сотрудники, уволенные до дня отпуска. Если неправильно поменяйте условие в запросе. Первым днем отпуска считается день из поля НачалаОтп.
Вложения
Тип файла: rar Otpusk.rar (31.5 Кб, 45 просмотров)
2
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
09.04.2016, 04:32
mobile, А как вы узнаёте, что к примеру - 02, 03, 09, 10 Января 2016 г. являются одновременно и выходными и праздничными днями, а соответственно по 2 раза не считаются в двойном размере?
0
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.04.2016, 09:20
Цитата Сообщение от PuhKMV Посмотреть сообщение
mobile, А как вы узнаёте, что к примеру - 02, 03, 09, 10 Января 2016 г. являются одновременно и выходными и праздничными днями, а соответственно по 2 раза не считаются в двойном размере?
В выложенном примере выходные и праздники не различаются. И те и другие помечаются одинаково в поле НеРабочий таблицы Календарь. Двойной учет исключен.
Но даже если бы Календаре было дополнительное поле логическое поле Праздник, то учет делается минимальной правкой в динамическом запросе в функции calcOtpusk: вместо условия Not НеРабочий ставим условие Not (НеРабочий Or Праздник). Что дает условию запроса вывод только тех записей, где день НЕ рабочий и НЕ праздник.

Если же для отпуска нужен учет только НЕ праздничных дней, т.е. выходные входят в число дней отпуска, то при наличии поля Праздник задаем условие Not Праздник.

Но в данном случае выходные (субботы, воскресенья) не входят по условию в отпуск. Поэтому поле Праздник не включено в т.Календарь.
1
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
09.04.2016, 09:56
Цитата Сообщение от mobile Посмотреть сообщение
...вместо условия Not НеРабочий ставим условие Not (НеРабочий Or Праздник)....
Ага, Спасибо за наводку, кажись врубился, попробую на своём примере для себя правильно сотворить.
Интересно же всёт аки
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
09.04.2016, 10:00
Можно вопрос. Константа 20 в операторе

Visual Basic
1
    df = Format(dateStart + kolDay + 20, "\#mm\/dd\/yyyy\#")
- это просто наобум взятое число, заведомо большее, чем масимально возможное число нерабочих дней подряд?
0
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
09.04.2016, 10:29
Цитата Сообщение от texnik-san Посмотреть сообщение
...Можно вопрос...
Похоже он или спит, или ужинает или исправляет.
И у богов похоже бывают наверное ошибки, а чЁ про нас, смертных уж говорить.
0
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.04.2016, 11:01
Цитата Сообщение от texnik-san Посмотреть сообщение
это просто наобум взятое число, заведомо большее, чем масимально возможное число нерабочих дней подряд?
Это для стратегии с выходными: круглое число чуть больше чем 2/7 от 30 дней + максимальная длительность праздников (10 дней на новый год).
Если макс.длительность отпуска не 30, то можно рассчитывать по примерной формуле Int(макс.продолжительность*2/7 + 0.5) + 2 + макс.продолжительность периода праздников. Здесь 2/7 доля выходных в неделе, 0,5 для округления вверх, слагаемое +2 для варианта когда период начинается и кончается выходными.
Кстати, если рассчитывать по этой формуле, то я несколько ошибся и и вместо 20 надо было брать 21=int(30.0*2/7+0.5)+2+10.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2016, 11:01
Помогаю со студенческими работами здесь

Расчитать дату окончания срока носки одежды
1 Нужна формула которая бы рассчитывала дату окончания срока носки 2 При условии что у каждого костюма может быть свой срок...

Показывать не только дату окончания/начала но и время
Добрый день Подскажите пожалуйста как сделать так, чтобы в данных ячейках показывалось не только дата но и время ...

Как получить дату окончания активности в bitrix
Как получить дату окончания активности в bitrix ? Желательно через API GetList

Как установить дату окончания испытательного срока пробного приложения
Собственно вопрос в заголовке. Я посмотрел реализацию в примерах и теперь знаю каким образом проверять что испытательный срок истек,...

Ввести с клавиатуры дату своего рождения и текущую дату. Необходимо вычислить разницу в днях между этими датам
Ввести с клавиатуры дату своего рождения и текущую дату. Необходимо вычислить разницу в днях между этими датами спасибо за ранее


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru