Создание триггеров входа и выхода из формы

Триггер, который вызывается при открытии формы – «WHEN-NEW-FORM-INSTANCE». В нашей форме необходимо, чтобы при загрузке сразу выполнялись запросы в блоках данных, чтобы можно было видеть, какие данные уже внесены в таблицы.

 

Заполнение полей из справочников при открытии формы

Чтобы поля, которые были созданы для отображения дополнительных данных справочников, были заполнены соответствующими данными уже при открытии формы, в блоках «DOVER» и «DOVER_SP» нужно создать триггеры «POST-QUERY» (рис. 128).

 

 

Рисунок 128 - Создание триггера POST-QUERY

Код «POST-QUERY» триггера для блока данных «DOVER»:

IF:dover.kod_org IS NOT NULL THEN     SELECT naimen INTO:DOVER.naim_org FROM s_org WHERE kod =:DOVER.kod_org; END IF;   IF:dover.kod_fiz_lic IS NOT NULL THEN     SELECT Concat(Concat(Concat(Concat(fam, ' '), im), ' '), otch) as fio     INTO:DOVER.fio     FROM s_fiz_lic WHERE kod =:DOVER.kod_fiz_lic; END IF;   EXCEPTION WHEN NO_DATA_FOUND THEN     NULL;

Код «POST-QUERY» триггера для блока данных «DOVER_SP»:

IF:dover_sp.kod_s_naimen IS NOT NULL THEN     SELECT naimen INTO:DOVER_SP.naimen FROM s_naimen     WHERE kod =:DOVER_SP.kod_s_naimen; END IF;   EXCEPTION WHEN NO_DATA_FOUND THEN     NULL;

 

Код триггера «WHEN-NEW-FORM-INSTANCE»:

:System.Message_Level:= '5'; Go_Block('DOVER'); Execute_Query; Go_Block('DOVER_SP'); Execute_Query; Go_Block('DOVER');

 

При закрытии окна формы выполняется триггер «WHEN-WINDOW-CLOSED». Если в форме есть несохраненные данные, то нужно предложить пользователю их сохранить. Для этих целей необходимо использовать сообщение – объект «Alert».

Чтобы создать объект «Alert», необходимо в окне Object Navigator выделить узел «Alerts» и выбрать пункт меню Edit->Create.

Для нового сообщения «Alert» установим следующие свойства:

– Name: SAVE_ALERT

– Title: Сообщение

– Message: Вы хотите сохранить сделанные Вами изменения?

– Button 1 Label: Да

– Button 2 Label: Нет

– Button 3 Label: Отмена

– Default Alert Button: Button 3

Теперь создадим триггер формы «WHEN-WINDOW-CLOSED» со следующим кодом:

 

DECLARE     but NUMBER;     stat VARCHAR2(14); BEGIN     Go_Block('DOVER');     stat:=:System.Block_Status;     Go_Block('DOVER_SP');     stat:= stat ||:System.Block_Status;              if stat <> 'QUERYQUERY' THEN               but:= Show_Alert('SAVE_ALERT');               if but = ALERT_BUTTON3 then -- Нажали "Отмена"                        return;               end if;               if but = ALERT_BUTTON1 then -- Нажали "Да"                        Save_Form;               end if;     end if;              Exit_Form(NO_VALIDATE); END;

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: