Последний этап в работе с отчетами, это необходимость создания кнопки «Печать» на форме документа для вызова отчета. Свяжем форму «d_dover2» и созданный нами отчет «d_dover2».
Выполним следующие операции:
1. Запустим Forms Builder и откроем форму «d_dover2»;
2. Откроем главный объект «Canvas» документа, выберем элемент для создания кнопки и расположим кнопку возле кнопок «OK» и «Отмена». Двойным щелчком вызовем свойства кнопки и введем в свойство «Label» подпись кнопки «Печать». Убедитесь в том, что созданная нами кнопка находится в блоке данных «TAIL».
3. Теперь нужно создать процедуру запуска отчета на выполнение из формы. Для этого перейдите в раздел «Программы» в «Object Navigator» и нажмите «+». В появившемяся окне выберите «Тип» - «Процедуры», в поле «Имя» введите «GO_PRINT» и нажмите «ОК». В появившемся окне PL/SQL Editor введите код процедуры «GO_PRINT» из лабораторной работы №3 раздел «Вызов отчета из формы».
Нажмем первую кнопку на панели инструментов PL/SQL Editor «Compile PL/SQL» для компиляции и закроте окно.
Теперь добавьте отчет «d_dover2» в раздел «Reports» в «Object Navigator» по аналогии с лабораторной работой №3. Переименуйте добавленный отчет в «d_dover2», путем одно щелчка мыши по имени и ввода нового.
|
|
Теперь для кнопки «Печать» необходимо добавить триггер «WHEN-BUTTON-PRESSED», в котором будет происходить вызов отчета. Для этого нужно проделпть следующие операции:
1. Откройте объект «Canvas», на котором расположена кнопка «Печать»;
2. Щелкните по кнопке «Печать», затем вызовите контекстное меню, в котором выберите «Smart Triggers» -> «WHEN-BUTTON-PRESSED»;
3. В открывшемся окне PL/SQL Editor введите текст вызова процедуры «GO_PRINT». Так как для запуска отчета «d_dover2» требует параметр «P_KOD», который определяет код документа, то мы должны передать его из формы в отчет. Для этого используется последний параметр процедуры «GO_PRINT». Это параметр является строковым, общий синтаксис его – «‘параметр_отчета1=значение_формы1 параметр_отчета2 = значение_формы2’»;
Общий синтаксис вызова:
GO_PRINT(‘имя_хоста’,’порт_хоста’,’имя_сервера_отчетов’,’имя_отчета’,’допол_парам’); |
Пример кода триггера «WHEN-BUTTON-PRESSED» вызова отчета «d_dover2»:
SAVE_FORM; GO_PRINT(‘localhost’,’8889’,’rep_206-1’,’d_dover2’,’p_kod=’||To_Char(:dover.kod)); |
В приведенном примере перед вызовом отчета мы производим сохранение данных формы, вызвав процедуру «SAVE_FORM», а затем запускаем отчет на выполнение (замените значение «rep_206-1» на имя Вашего сервера отчета).
4. Нажмем первую кнопку на панели инструментов PL/SQL Editor «Compile PL/SQL» для компиляции и закроете окно.
Откомпилируйте и сохраните файл формы. Запустите стартовый модуль «START», из меню вызовите форму документа «Доверенность №2», добавьте запись документа, нажмите кнопку «Печать» для вызова отчета.
|
|
Лабораторная работа №8. Создание формы ввода данных и списка документов с использованием объектного подхода
Цель работы: познакомиться с объектным подходом организации информационной системы.
Задание: выполнить в Sql*Plus команды контрольных примеров; создать формы списка документов (журнала) в Oracle Forms Developer по таблице, которая включает в себя вложенную таблицу со ссылками на справочники в каждой из таблиц; создать формы документа в Oracle Forms Developer по таблице, которая включает в себя вложенную таблицу со ссылками на справочники в каждой из таблиц; подключить созданные формы журнала и документа к ранее созданному меню «TOP_MENU».
Порядок выполнения работы
Для понимания того, как выполнить некоторые пункты задания Вам нужно обратиться к предыдущим темам занятий.
Создание объектных типов и таблиц справочников в SQL Plus
CREATE TYPE t_s_org2 AS OBJECT (kod NUMBER(7,0), naimen VARCHAR2(50), inn VARCHAR2(10)) / CREATE TABLE s_org2 OF T_S_ORG2 / ALTER TABLE s_org2 ADD CONSTRAINT pk_s_org2 PRIMARY KEY (kod) USING INDEX / CREATE TYPE t_s_naimen2 AS OBJECT (kod NUMBER(7,0), naimen VARCHAR2(50)) / CREATE TABLE s_naimen2 OF T_S_NAIMEN2 / ALTER TABLE s_naimen2 ADD CONSTRAINT pk_s_naimen2 PRIMARY KEY (kod) USING INDEX / CREATE TYPE t_s_fiz_lic2 AS OBJECT (kod NUMBER(7,0), fam VARCHAR2(30), im VARCHAR2(25), otch VARCHAR2(25), p_vidan VARCHAR2(80), p_ser_nom VARCHAR2(20)) / CREATE TABLE s_fiz_lic2 OF T_S_FIZ_LIC2 / ALTER TABLE s_fiz_lic2 ADD CONSTRAINT pk_s_fiz_lic2 PRIMARY KEY (kod) USING INDEX / |
Создание объектных типов и таблиц документа в SQL Plus
CREATE TYPE t_d_n1_dover4 AS OBJECT (kod NUMBER(8,0), ref_s_naimen2 REF T_S_NAIMEN2, kol NUMBER(5,3), ed_izm VARCHAR2(8)) / CREATE TYPE tt_d_n1_dover4 AS TABLE OF T_D_N1_DOVER4 / CREATE TYPE t_d_dover4 AS OBJECT (kod NUMBER(10,0), ndoc NUMBER(6,0), datav DATE, data_deis DATE, ref_fiz_lic2 REF T_S_FIZ_LIC2, ref_org2 REF T_S_ORG2, -- Вложенная таблица n1_naimen TT_D_N1_DOVER4) / CREATE TABLE D_DOVER4 OF T_D_DOVER4 NESTED TABLE n1_naimen STORE AS d_n1_dover4 / ALTER TABLE d_dover4 ADD CONSTRAINT pk_d_dover4 PRIMARY KEY (kod) USING INDEX / |
Создание последовательностей в SQL Plus
CREATE SEQUENCE seq_d_dover4 INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999999999999999 NOCYCLE NOORDER NOCACHE / CREATE SEQUENCE seq_d_dover4_n1 INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999999999999999 NOCYCLE NOORDER NOCACHE / |