Вызов отчета из формы

Последний этап в работе с отчетами, это необходимость создания кнопки «Печать» на форме документа для вызова отчета. Свяжем форму «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 /

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



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