Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83

Зависимость даты начала и окончания пунктов из разных мероприятий с последующим пересчетом сроков выполнения

17.11.2017, 14:32. Показов 3023. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, форумчане!) Возник вопрос.

Возможно ли организовать зависимость даты начала и окончания пунктов из разных мероприятий с последующим пересчетом сроков выполнения.
Например: В одном мероприятии есть несколько пунктов, начало которых зависит от окончания другого пункта из другого мероприятия. Это все в рамках одного графика.

В процессе заполнения графика, пользователь возле вносимого пункта проставляет к какому пункту из другого или из этого-же мероприятия он зависит. Нужно это для того, если какой-то пункт изменили (срок перенесли), и в зависимых от него пунктах, автоматом пересчитались сроки начала и окончания.


БД прикрепил. (Формат Access 2010).
Пользователь "Администратор"
Пароль для входа: 123456

Может у кого-то есть мысли как это реализовать?
Буду очень признателен за помощь в реализации данной задумки.
Вложения
Тип файла: rar Database1_test2.rar (4.25 Мб, 5 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2017, 14:32
Ответы с готовыми решениями:

Дается две даты: дата начала и дата окончания. Высчитать между ними часы, минуты, секунды
Здравствуйте многоуважаемые форумчане!!! Прошу Вас помочь новичку сколько бьюсь над этой темой ничего нормального не найду. Дается две...

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

Формировка начала и окончания недели
$da = date('W'); // сейчас 43 неделя как вывести 43 неделя начинаеться с 19.11.12 по 25.11.12? и так для любой недели

31
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.12.2017, 15:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ershov_pavel Посмотреть сообщение
Где и что нужно добавить в ваш код, чтобы он приплюсовал один день к дате начала пункта, но опять же, чтобы учитывал выходные?
Например: "Пункт1" заканчивается 15.12.2017, а "Пункт2" начинается 18.12.2017, т.к. 16 и 17 это выходные.
Я сделал так как Вы объясняли выше - новый пункт начинается в день окончания предыдущего. Но если правила изменились сделаю на следующий рабочий день.

Добавил для экспериментов новый график 123456, мероприятия к нему и пару пунктов.
Вложения
Тип файла: rar Database1_test2_v1.2.rar (4.24 Мб, 3 просмотров)
1
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
15.12.2017, 10:40  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Я сделал так как Вы объясняли выше - новый пункт начинается в день окончания предыдущего. Но если правила изменились сделаю на следующий рабочий день.
Добавил для экспериментов новый график 123456, мероприятия к нему и пару пунктов.
Доброе утро, уважаемый, mobile!) Спасибо Вам огромное за доработку!)

Мне уже стыдно Вам писать...Вы очень много для меня уже сделали, но я прошу еще мне помочь.

Даты высчитывает так как надо, но при тестировании выяснилось, что если поле "датаокончанияпункта" пустое, то оно не пересчитывается и остается пустым. Например, если заполнять новый пункт. Мы указываем номер пункта, название, ставим дату начала, продолжительность и если запустить процедуру, то он не трогает эту запись вообще. Можно ли сделать так, чтобы этот код работал и с такими пунктами? Просто хочу привязать процедуру пересчета графика на изменение поля длительность.
И можно ли уйти от заполнения дополнительного поля "ПредыдущееМероприятие", т.к. пересчет идет не всей таблицы, а выбранного графика, соответственно номера пунктов не будут повторяться. Или сделать, так, чтобы при вводе в поле предыдущий пункт (из другого мероприятия), название этого мероприятия прописалось автоматически.
Буду очень признателен за помощь в решении данных вопросов!)
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
16.12.2017, 00:35
К сожалению времени мало, возможны ошибки или чего-то недоделал.

Предыдущее мероприятие находится автоматом по номеру пункта в заданном графике. Можно это поле вообще скрыть. Я бы сделал предыдущий пункт полем со списком, где будут все пункты данного графика. Но это на Ваше усмотрение.
Вложения
Тип файла: rar Database1_test2_v1.3.rar (4.25 Мб, 3 просмотров)
1
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
19.12.2017, 16:21  [ТС]
Добрый день, уважаемый,mobile!) Спасибо за доработку) Работает все как и просил.
Выяснилось, что если указать в поле длительность например 200 дней или отрицательное значение, то выдает ошибку (скриншоты приложил). Пробовал самостоятельно исправить, что-то не получилось.

И еще не могу прикрутить на поле ДатаОкончанияПункта после обновления поля формулу, которая высчитывает длительность, если изменить дату окончания пункта.
Вот сама формула: =Int([ДатаОкончанияГрафика]-[ДатаНачалаГрафика])+1-(Int(([ДатаОкончанияГрафика]-[ДатаНачалаГрафика])/7)*2-(Weekday([ДатаОкончанияГрафика];2)<Weekday([ДатаНачалаГрафика];2))*2+Choose(Weekday([ДатаОкончанияГрафика];2);0;0;0;0;0;1;2)+(Weekday([ДатаНачалаГрафика];2)=7))

Если у Вас будет время и возможность, посмотрите пожалуйста.

Базу прикрепил.
Пользователь: Контролер
Пароль: 123456
Миниатюры
Зависимость даты начала и окончания пунктов из разных мероприятий с последующим пересчетом сроков выполнения   Зависимость даты начала и окончания пунктов из разных мероприятий с последующим пересчетом сроков выполнения  
Вложения
Тип файла: rar Графики с базой.rar (4.36 Мб, 2 просмотров)
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.12.2017, 22:04
ershov_pavel, я сделал, что Вы просите.
Форма [ПунктыГрафикаПодчиненная форма]. Исправил процедуру Длительность_AfterUpdate, внес необходимые ограничения. По ДатаОкончанияПункта перенес большую часть кода в ДатаОкончанияПункта_BeforeUpdate, чтобы иметь возможность исправить потенциально неверные, случайные значения. Также изменил код по Вашему новому ТЗ. Правда оно противоречит прежнему, ну да Вам виднее.
Вложения
Тип файла: rar Графики с базой.rar (4.35 Мб, 3 просмотров)
1
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
20.12.2017, 11:34  [ТС]
Добрый день, уважаемый, mobile!) Вы как всегда на высоте) После тестов пару ошибок нашел, но их я поправил, добавив пару условий.

Стыдно конечно такое писать.....но очень хочется добавить в процедуру "PereschetGrafic" пару вещей. Если вы мне поможете, я буду очень Вам благодарен и на седьмом небе от счастья!)))

1. Возможно ли сделать, чтобы по нажатию кнопки "Пересчет дат в графике", пункты которые имеют статус "Выполнено" их не пересчитывало? Но зависимость бы сохранилась.

2. Возможно ли сделать так, чтобы по нажатию кнопки "Пересчет дат в графике" к которой привязана процедура "PereschetGrafic", после всех вычислений в поле "ДатаОкончанияГрафика" или в поле "ДатаОкончанияГрафика" таблицы "Графики", была помещена самая максимальная дата окончания пункта графика. Так сказать, чтобы было видно дату начала и окончания графика.

Например: Разработчик графика вносит дату начала графика, потом заполняет все поля, указывает все зависимости, сроки выполнения и после нажатия кнопки "Пересчет дат в графике", дата окончания последнего пункта (пункт который имеет самую максимальную дату в поле ДатаОкончанияПункта и все это в том графике, который он выбрал) вносится в поле "ДатаОкончанияГрафика" таблицы "Графики".


Базу прикрепил. В таблице "График", создал поле "ДатаОкончанияГрафика" и в форме создал поле "ДатаОкончанияГрафика"
Пользователь: Контролер
Пароль: 123456
Вложения
Тип файла: rar Графики с базой.rar (4.36 Мб, 4 просмотров)
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.12.2017, 10:25
Лучший ответ Сообщение было отмечено ershov_pavel как решение

Решение

ershov_pavel, смотрите вложение. Сделал как Вы просили.
Вложения
Тип файла: rar Графики с базой-v2.rar (4.35 Мб, 3 просмотров)
1
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
22.12.2017, 15:15  [ТС]
mobile, добрый день!) Спасибо огромное за проделанную Вами работу! Работает все прекрасно.
0
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
26.12.2017, 08:16  [ТС]
Уважаемый, mobile, добрый день! Помните, вы говорили: "Я бы сделал предыдущий пункт полем со списком, где будут все пункты данного графика."? Я пытаюсь это сделать, но у меня не выходит. Подскажите пожалуйста, с помощью чего и как это можно сделать?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
26.12.2017, 08:44
ershov_pavel, смотрите вложение. Поле ПредыдущийПункт преобразовано в поле со списком. Источник поля со списком запрос
SQL
1
2
3
4
SELECT ПунктыГрафика.НомерПунктаграфика, Мероприятия.НаименованиеМероприятия, 
ПунктыГрафика.ДатаОкончанияПункта, Мероприятия.КодГрафика 
FROM Мероприятия INNER JOIN ПунктыГрафика ON Мероприятия.КодМероприятия = ПунктыГрафика.КодМероприятия 
WHERE Мероприятия.КодГрафика=forms![График1]![КодГрафика];
Также в ПолеСоСписком40 на главной форме вместо макроса на событии После обновления записана процедура в ВБА
для поиска в таблице нужного графика, позиционирования на нем и обновления поля со списком ПредыдущийПункт в подформе
Visual Basic
1
2
3
4
Private Sub ПолеСоСписком40_AfterUpdate()
    Me.Recordset.FindFirst "КодГрафика =" & Me.ПолеСоСписком40
    Me.[ПунктыГрафика подчиненная форма]!ПредыдущийПункт.Requery
End Sub
Вложения
Тип файла: rar Графики с базой-v2.rar (4.36 Мб, 2 просмотров)
1
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
26.12.2017, 09:26
Лучший ответ Сообщение было отмечено ershov_pavel как решение

Решение

Небольшая ошибка. После преобразования потерялась ссылка на событие BeforeUpdate поля ПредыдущийПункт. Вставил
Вложения
Тип файла: rar Графики с базой-v2.rar (4.36 Мб, 19 просмотров)
1
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
26.12.2017, 10:39  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
смотрите вложение. Поле ПредыдущийПункт преобразовано в поле со списком. Источник поля со списком запрос
Спасибо, все сделано в лучшем виде!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.12.2017, 10:39

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

В dbGrid в первом столбце даны даты начала работы, а во втором - даты увольнения. Как высчитать стаж?
В dbGrid в первом столбце даны даты начала работы а во втором даты увольнения как высчитать стаж. помогите пожалуйста

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

Засечь время от начала одной операции до окончания другой
Такая задача- допустим юзер открывает файл, текстовый, который потом выводится в TMemo, нужно засечь время от начала открытия файла до...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru