![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 19.06.2011
Сообщений: 5
|
![]()
Добрый день. Прошу помощи в реализации следующих задач
Вопрос 1. Создание запроса автоматического расчета даты аттестации работников по каждой программе: Табл. T_holiday – это индивидуальный отпуск каждого работника (может выпадать на рабочую вахту, а также его может и не быть, также отпуск может разбиваться и в год для одного работника их может быть несколько). Табл. T_shift – это вахта, которая связывается с табл. T_schedule – это график работы вахты T_training – указана периодичность повторного обучения в месяцах (Id_frequency) T_exam – это день в рабочей вахте проведения аттестации комиссией предприятия. В запросе «Запрос1-3-1» я вывел дату, но в ней я просто прибавил периодичность повторного обучения к последней дате протокола с учетом программы обучения. Можно ли сделать запрос, который выбирал бы дату, которая попадала бы в рабочую вахту с учетом периодичности обучения, отпусков работников и учитывала день аттестации на рабочей вахте. Необходим следующий алгоритм (но имеются трудности с реализацией): Для работников, у которых ранее были протоколы (Запрос1-3-1): а) Для каждого работника и каждой области аттестации определяем ближайшую рабочую вахту (T_schedule) в которую попадёт крайняя дата аттестации. б) К дате начала вахты (T_schedule.StartSchedule) прибавляется день аттестации в зависимости от программы (T_exam.Day) б) Проверяем, попадает ли эта дата на отпуск T_holiday. Если попала на отпуск, то выбираем более раннюю рабочую вахту (т.е. идем назад) и алгоритм повторяем, до тех пор, пока не выполнятся условия. Для вновь принимаемых работников (у которых нет протоколов, Запрос1-3-1) а) К дате приема (T_personal.DateWork) прибавляем день аттестации в зависимости от программы (T_exam.Day) б) Проверяем, попадает ли эта дата на рабочую вахту. Если не попадает, то берем следующую (т.е. идем вперед) рабочую вахту и к дате начала вахты (T_schedule.StartSchedule) прибавляется день аттестации в зависимости от программы (T_exam.Day) и алгоритм повторяем, до тех пор, пока не выполнятся условия. Например: В табл. Id_personal T_personal.Id_personal 5 (Курочкин Павел Тимофеевич) T_personal.Id_shift 1 (т.е. вахта 1) В Запрос1-3-1, прошел аттестацию по программе «Безопасные методы и приемы выполнения работ для машиниста технологических насосов» с датой последней аттестации 03.10.2022 (Протокол 03-Р-2022) (периодичность которой установлена 12 месяцев), соответственно следующая должна быть не позднее 03.10.2023. С учетом табл. T_schedule близкая дата аттестации с учетом графика работы для вахты 1 это 16.08.2023- 15.09.2023, но в эти даты у него отпуск табл. T_holiday, следовательно ближайшая для данного работка будет 16.06.2023-15.07.2023. С учетом табл. T_exam для данного программы и вахты 1 установлен 5 день работы, следовательно 16.06.2023+5 = 20.06.2023 Таким образом, в запросе отображается дата 20.06.2023 Также если протокола нет Запрос1-3-1, то дата определяется как дата приема (T_personal.DateWork) плюс день аттестации (T_exam) с учетом графика работы (т.е. если его приняли в середине вахты, то аттестацию, которую он не успел пройти, переносится на следующую вахту). Вопрос 2. Перенес данные из Form5-1 в таблицы T_protocol и T_protocolFIO (при создании Протокола), т.е. а) номер протокола, дата протокола, комиссия в табл. T_protocol б) данные из раздела «работник» (в случае если стоит галочка в столбце «Аттестация», рис.1) перенести в табл. T_protocolFIO (в данном разделе работников может быть много) Также имеются трудности в формировании автоматического номера протокола в форме с учетом года и типа обучения T_training по следующей маске (ЗапросНомерПротокол): 01 - Р – 2022 где - 01 порядковый номер, который зависит от вида обучения T_training.InputMask, он обнуляется каждый год. Но в случае если протокол необходимо создать между уже созданными протоколами, то он берет ближайший и через дробь указывает порядковый номер. Например, 03.10.2022 выдан протокол 02, 05.10.2022 выдан протокол 03 и необходимо выдать еще протоколы в период 03.10.2022-04.10.2022, то он берет ближайший и через дробь указывает порядковый номер 02/1, 02/2 и т.д. Также имеется потребность в формировании номера следующим образом с учетом нуля 01,02..10,11,12 и т.д., но если дробь то нули после дроби не нужны 02/1, 11/1 и т.д. Р - вида обучения T_training.InputMask 2022 - год Буду признателен за любую помощь. Спасибо. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 23.02.2018
Сообщений: 86
|
![]()
У вас таблицы "T_protocol" и "T_personal" не имеют боле-мене чёткой связи, а значит "трудности" и ошибки в желаемом расчёте практически гарантированы.
Можете схему данных подправить так, чтобы было ясно кто и когда - что сдавал?
mailto: 2867077@gmail.com
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.02.2018
Сообщений: 86
|
![]()
И зачем эти префиксы в названиях таблиц "T_" ???
И давайте делать красиво! ... Название таблицы = название сущности во множественном числе. ... Что там у вас за бешеные справочники и связи? - вы не сильно увлеклись "нормализацией" ?! ... Справочник полов вообще порадовал (повеселил) ... Are you maind?
mailto: 2867077@gmail.com
Последний раз редактировалось Eugene-LS; 03.01.2023 в 06:36. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 510
|
![]()
в единственном числе
https://stackoverflow.com/questions/...s-plural-names
стимулятор https://yoomoney.ru/to/41001303250491
Последний раз редактировалось Valick; 03.01.2023 в 11:18. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 23.02.2018
Сообщений: 86
|
![]()
Да! -Точно!
Это очень важно. Савсем забыл! При преобразовании множества ОНО образует Единственное число парекумеранада ... согласно правому правилу подмножеств ... Да! В единственном числе.
mailto: 2867077@gmail.com
Последний раз редактировалось Eugene-LS; 10.01.2023 в 13:38. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автоматический перенос данных с таблиц Excel в текст Word | YSL | Microsoft Office Word | 52 | 27.06.2021 05:01 |
Автоматический перенос данных из общего листа в другие | evil-12 | Microsoft Office Excel | 7 | 21.02.2014 19:29 |
помогите сделать автоматический перенос данных с одного листа на другой | AlexP15 | Microsoft Office Excel | 8 | 12.10.2013 16:15 |
автоматический перенос данных с нескольких листов в один | Наталья Матвеева | Помощь студентам | 0 | 20.02.2012 12:50 |
Автоматический перенос данных из общего листа в другие | InvoiceControl | Microsoft Office Excel | 3 | 02.10.2008 13:21 |