Код триггера «WHEN-NEW-FORM-INSTANCE»:
:System.Message_Level:= '5'; if:PARAMETER.kod_dover is null then -- Если новый документ return; end if; 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; |
Изменение формы D_DOVER4_LIST
Изменим форму «D_DOVER4_LIST» («Список доверенностей») так, чтобы из списка документов можно было открыть выбранный документ в форме «D_DOVER4» («Доверенность»), либо создать новый документ.
Теперь код триггера «WHEN-NEW-FORM-INSTANCE» будет выглядеть таким образом:
DECLARE p PARAMLIST; BEGIN :system.message_level:=5; :TAIL.begind:=Trunc(sysdate,'MM'); :TAIL.endd:=last_day(sysdate); SET_BLOCK_PROPERTY('DOVER4_L', DEFAULT_WHERE, 'datav between '''||:TAIL.BEGIND||''' AND '''||:TAIL.ENDD||''''); Go_Block('DOVER4_L'); Execute_Query; -- Установка параметров p:= Create_Parameter_List('p_list1'); Add_Parameter(p, 'KOD_DOVER', TEXT_PARAMETER, '1'); END; |
Поместите две кнопки «Новый документ» (Name: NEW_BUTTON) и «Открыть документ» (Name: OPEN_BUTTON), которые расположите в нижней части формы.
Код кнопки NEW_BUTTON:
Call_Form('D_DOVER4'); Go_Block('DOVER4_L'); Execute_Query; |
Код кнопки OPEN_BUTTON:
Set_Parameter_Attr('p_list1', 'KOD_DOVER', TEXT_PARAMETER,:DOVER4_L.kod); Call_Form('D_DOVER4', NO_HIDE, NO_REPLACE, NO_QUERY_ONLY, NO_SHARE_LIBRARY_DATA, 'p_list1'); Go_Block('DOVER4_L'); Execute_Query; |
После того, как формы документа и журнала готовы, подключите документ и журнал в ранее созданное меню «TOP_MENU». Для этого откройте модуль меню и добавьте пункты «Документы» и «Журналы» (если они не существуют), далее добавьте подпункт «Доверенность №4» в два этих пункта.
Добавьте PL/SQL код вызова формы журнала для подпункта «Доверенность №4».
OPEN_FORM(‘D_DOVER4_LIST’); |
Добавьте PL/SQL код вызова формы документа для подпункта «Доверенность №4».
OPEN_FORM(‘D_DOVER4’); |
В свойстве модуля формы журнала и документа «MENU MODULE» введите «TOP_MENU», для того чтобы при открытии форм загружалось меню «TOP_MENU».
Сохраните и откомилируйте файлы форм журнала, документа и меню. Запустите стартовый модуль «START» и попробуйте вызвать из меню журнал «Доверенность №4».
Теперь форму можно сохранить под именем «D_DOVER4_LIST», запустить и проверить работоспособность внесенных изменений.
Лабораторная работа №9. Создание отчета по объектным таблицам
Цель работы: научиться создавать отчеты по объектным таблицам.
Задание: создать отчет для объектной таблицы; проверить работоспособность отчета; настроить форму списка документов для вызова отчета.