Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
zeha_t
Зарегистрирован: 30.03.2012 Сообщения: 25
|
Добавлено: Пн Апр 02, 2012 15:32 Заголовок сообщения: создание диалога для обработки данных по назначению |
|
|
Добрые люди помогите разобраться с созданием диалога. (занимаюсь боссом очень мало, поэтому сразу прошу простить если что не так). Итак, хочу создать диалоговое окно, с помощью которого смог бы задавать необходимый диапозон по дате назначения сотрудников, есть вот такой диалог, может можно переделать его ))).
--диалог ввода периода
STABLE @XName SELECT GetDate() ,
GetDate() ;
alias _dlgresource={
(0,0,350,100,0);
e,(50,0,80,20, 0x10),'с ...',(50,20,80,20,0x100),1;
e,(200,0,80,20, 0x10),'по ...',(200,20,80,20,0x100),2;
};
DIALOG @XName,,'~Дата расчета' ;
Let :dat1_ := @XName:1 as date;
Let :dat2_ := @XName:2 as date;
DESTROY @XName;
--return dat1_ ... dat2_;
if _Result <> 10 then error; -- отказ -> выход |
|
Вернуться к началу |
|
 |
Mike Большой шоколадный орден

Зарегистрирован: 07.04.2011 Сообщения: 255
|
Добавлено: Пн Апр 02, 2012 15:56 Заголовок сообщения: |
|
|
Цитата: | с помощью которого смог бы задавать необходимый диапозон по дате назначения сотрудников |
А можно поконкретнее, я эту фразу совсем не понял.
Если имеется ввиду, что нужен период задавать, то этот диалог вполне подходит... а что еще нужно то? |
|
Вернуться к началу |
|
 |
zeha_t
Зарегистрирован: 30.03.2012 Сообщения: 25
|
Добавлено: Пн Апр 02, 2012 16:22 Заголовок сообщения: |
|
|
да нужно задавать период, но необходимо чтобы этот период работал конкретно по дате назначения, т.е. как привязать диалог к дате назначения (просто я чайник, может проблему не корректно описываю).
делаю так browser{
SELECT [Card1].[Full_Name][%x]"ФИО",
[People2].[in_date][%x]"Дата приема на работу",
[People2].[out_date][%x]"Дата увольнения",
[PR_CURRENT3].[Date_trans] [%x]"Дата назначения",
[Appointments4].[Name_appoint] [%x]"Должность",
[SETUP5].[Name] [%x]"Наименование предприятия",
[Card1].[Name] [%x]"Фамилия"
FROM [Card] as [Card1] (NOLOCK)
join [People] as [People2] (NOLOCK) ON [People2].[Auto_Card] = [Card1].[Auto_Card]
join [PR_CURRENT] as [PR_CURRENT3] (NOLOCK) on [PR_CURRENT3].[PID]=[people2].[PID]
join [Appointments] as [Appointments4] (NOLOCK) on [Appointments4].[code_appoint]=[PR_CURRENT3].[code_appoint]
join [SETUP] as [SETUP5] (NOLOCK) on [SETUP5].[id_firm]=[people2].[id_firm]
WHERE 1 = 1 and [SETUP5].id_firm = 1
and [People2].in_date<=getdate() and [People2].out_date>getdate()
and [PR_CURRENT3].flag_last='*'
and ([People2].in_date>='01.03.2012' and [People2].out_date>='01.04.2012')
}
задаю диапозон с помощью условия, не получается + ко всему хочу для себя понять как можно диалог с выбором периода связать с датой назначения, как то так  |
|
Вернуться к началу |
|
 |
zeha_t
Зарегистрирован: 30.03.2012 Сообщения: 25
|
Добавлено: Пн Апр 02, 2012 16:23 Заголовок сообщения: |
|
|
с browser это я уже сам экспериментирую как второй вариант, но всё же хочу понять как создаётся диалог... |
|
Вернуться к началу |
|
 |
Mike Большой шоколадный орден

Зарегистрирован: 07.04.2011 Сообщения: 255
|
Добавлено: Пн Апр 02, 2012 17:14 Заголовок сообщения: |
|
|
Вы все правильно делаете.
В секции where, когда выводите окошко browser на экран, добавьте в условие переменные из диалога:
Код: | WHERE 1 = 1 and [SETUP5].id_firm = 1
and [People2].in_date<=getdate() and [People2].out_date>getdate()
and [PR_CURRENT3].flag_last='*'
and ([People2].in_date>=dat1_and [People2].out_date>=dat2_) |
Последний раз редактировалось: Mike (Пн Апр 02, 2012 17:16), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
Mike Большой шоколадный орден

Зарегистрирован: 07.04.2011 Сообщения: 255
|
Добавлено: Пн Апр 02, 2012 17:15 Заголовок сообщения: |
|
|
zeha_t писал(а): | с browser это я уже сам экспериментирую как второй вариант, но всё же хочу понять как создаётся диалог... |
Диалог вы создаете, в диалоге заполняются поля и переменным передается значение.
Далее эти переменные можете использовать хоть в браузерах, хоть где... |
|
Вернуться к началу |
|
 |
zeha_t
Зарегистрирован: 30.03.2012 Сообщения: 25
|
Добавлено: Вт Апр 03, 2012 08:01 Заголовок сообщения: |
|
|
спасибо, вроде теперь понятно! |
|
Вернуться к началу |
|
 |
vviktor
Зарегистрирован: 09.01.2019 Сообщения: 105 Откуда: Пермь
|
Добавлено: Ср Янв 27, 2021 10:46 Заголовок сообщения: |
|
|
Доброго дня !
Обнаружено странное проведение триггера по простановке признака ""
В случае если редактируемое назначение является последним "" и переносится в информационные/
Прошу исправить trigger [tr_Pr_current_u__flag_last]
Добавив проверку для 'deleted'
Код: | if exists (select top 1 1 from deleted where pid > 0)
begin
-- отмечаем последнее назначение часть 2
UPDATE dbo.pr_current
SET flag_last = ' '
FROM deleted
WHERE deleted.pid = pr_current.pid
AND pr_current.flag_last = '*'
UPDATE dbo.pr_current
SET flag_last = '*'
,date_depart = '2099-01-01'
FROM deleted
WHERE deleted.pid = pr_current.pid
AND pr_current.prid = (
SELECT top 1 prid
FROM dbo.pr_current
WHERE pid = deleted.pid
ORDER BY date_trans DESC, prid DESC
)
end |
|
|
Вернуться к началу |
|
 |
RVV Большой шоколадный орден

Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Ср Янв 27, 2021 11:22 Заголовок сообщения: |
|
|
Поле flag_last давно уже не используется |
|
Вернуться к началу |
|
 |
vviktor
Зарегистрирован: 09.01.2019 Сообщения: 105 Откуда: Пермь
|
Добавлено: Ср Янв 27, 2021 15:42 Заголовок сообщения: |
|
|
в демо базе данный триггер присутствует версия (6.07.01.21) |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Ср Янв 27, 2021 15:54 Заголовок сообщения: |
|
|
А взять демо-базу поновее? |
|
Вернуться к началу |
|
 |
RVV Большой шоколадный орден

Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Чт Янв 28, 2021 15:48 Заголовок сообщения: |
|
|
Триггеры
TR tr_Pr_current_d__flag_last
TR tr_Pr_current_i__flag_last
TR tr_Pr_current_u__flag_last
оставлены для совместимости со старым кодом.
Но в планах - их удалить, тк поле flag_last давно не используется,
в т.ч. и в отчетах |
|
Вернуться к началу |
|
 |
vviktor
Зарегистрирован: 09.01.2019 Сообщения: 105 Откуда: Пермь
|
Добавлено: Пт Янв 29, 2021 13:29 Заголовок сообщения: |
|
|
Понял. Спасибо. |
|
Вернуться к началу |
|
 |
|