double arrow

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


Последний этап в работе с отчетами, это необходимость создания кнопки «Печать» на форме справочника, для вызова отчета. Свяжем форму «s_org» и созданный нами отчет «rep_org»

Выполним следующие операции:

1. Запустим Forms Builder и откроем форму «s_org»;

2. Откроем главный объект «Canvas» справочника, выберем элемент для создания кнопки и расположим кнопку возле кнопок «Сохранить» и «Закрыть». Двойным щелчком вызовем свойства кнопки и введем в свойство «Label» подпись кнопки «Печать». Убедитесь в том, что созданная нами кнопка находится в блоке данных «S_ORG_TAIL».

3. Теперь нужно создать процедуру запуска отчета на выполнение из формы. Для этого перейдите в раздел «Программы» в «Object Navigator» и нажмите «+». В появившемяся окне выберите «Тип» - «Процедуры», в поле «Имя» введите «GO_PRINT» и нажмите «ОК»

В появившемся окне PL/SQL Editor введем следующий текст:

 

PROCEDURE GO_PRINT (srv_host VARCHAR2, srv_port VARCHAR2, srv_name VARCHAR2, rep VARCHAR2, params VARCHAR2)  IS repid REPORT_OBJECT;  v_rep VARCHAR2(100);  rep_status VARCHAR2(20);  other             VARCHAR2(1024); printer_name VARCHAR2(80); BEGIN repid := find_report_object(rep);   -- Устанавливаем свойства отчета SET_REPORT_OBJECT_PROPERTY(repid, REPORT_EXECUTION_MODE,BATCH);  SET_REPORT_OBJECT_PROPERTY(repid, REPORT_COMM_MODE,SYNCHRONOUS); SET_REPORT_OBJECT_PROPERTY(repid, REPORT_DESTYPE,CACHE);  SET_REPORT_OBJECT_PROPERTY(repid, REPORT_DESFORMAT,'pdf'); SET_REPORT_OBJECT_PROPERTY(repid, REPORT_SERVER,srv_name);   -- Передаем отчету дополнительную строку параметров SET_REPORT_OBJECT_PROPERTY(repid, REPORT_OTHER, params);   v_rep := RUN_REPORT_OBJECT(repid);  rep_status := REPORT_OBJECT_STATUS(v_rep);    -- Ожидаем выполнение и формирование отчета WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP rep_status := Report_Object_Status(v_rep); END LOOP;              -- Если отчет сформировался, показываем его в браузере IF rep_status = 'FINISHED' THEN     WEB.SHOW_DOCUMENT('http://'|| srv_host ||':'|| srv_port||     '/reports/rwservlet/getjobid'|| substr(v_rep,instr(v_rep,'_',-1)+1)||     '?'||'server=' || srv_name,'_blank'); ELSE  message('Ошибка вывода на печать!!!');  END IF;    END;

 




Опишем параметры, которые принимает процедура:

- «srv_host» - входящий текстовый параметр, определяет имя хоста или IP-адрес, где установлен сервер отчетов. В нашем случаи, так как сервер отчетов устанавливается локально, в качестве значения этого параметра можут быть «localhost» или IP-адрес – 127.0.0.1;

- «srv_port» - входящий текстовый параметр, определяет порт хоста, по умолчанию для Oracle Developer Suite – 8889, для Oracle Application Server – 80;

- «srv_name» - входящий текстовый параметр, определяет имя сервера отчетов;

- «rep» - входящий текстовый параметр, определяет имя объекта «Reports» созданного в Forms Builder;

- «params» - входящий текстовый параметр, определяет дополнительную строку параметров, которые будут переданы отчету перед его выполнением.

Нажмем первую кнопку на панели инструментов PL/SQL Editor «Compile PL/SQL» для компиляции и закроем это окно.

Теперь добавим сам отчет, перейдите на пункт «Reports» в «Object Navigator» и нажмите кнопку «+», в результате появится следующее окно (рис. 75).



 

 

Рисунок 75 - Окно выбора отчета для добавления его в форму

 

Выберете «Use Existing Report File» и нажмите кнопку «Browse…», после чего в появившемся окне найдите файл отчета «rep_org.rdf» и нажмите «OK», в результате в окне появится путь к файлу отчетов. Так как ранее мы настроили сервер отчетов, указав ему, возможные места нахождения отчетов, поэтому в поле «Filename» оставьте только имя файла с расширением. Затем нажмите кнопу «OK». В «Object Navigator» в пункте «Reports» появится отчет, теперь нам нужно переименовать его в «rep_org», путем одно щелчка мыши по имени и ввода нового. После проделанных нами операций мы увидим (рис. 76).

 

 

Рисунок 76 - Прикрепленный отчет «REP_ORG» в форме «S_ORG»

 

Теперь для кнопки «Печать» необходимо добавить триггер «WHEN-BUTTON-PRESSED», в котором будет происходить вызов отчета. Для этого нужно проделпть следующие операции:

1. Откройте объект «Canvas», на котором расположена кнопка «Печать»;

2. Щелкните по кнопке «Печать», затем вызовите контекстное меню, в котором выберите «Smart Triggers» -> «WHEN-BUTTON-PRESSED»;

3. В открывшемся окне PL/SQL Editor введите текст вызова процедуры «GO_PRINT»

Общий синтаксис вызова:

 

GO_PRINT(‘имя_хоста’,’порт_хоста’,’имя_сервера_отчетов’,’имя_отчета’,’допол_парам’);

 

Пример вызова отчета «rep_org»:

 

GO_PRINT(‘localhost’,’8889’,’rep_206-1’,’REP_ORG’,’’);

4. Нажмем первую кнопку на панели инструментов PL/SQL Editor «Compile PL/SQL» для компиляции и закройте окно.

Откомпилируйте и сохраните файл формы, запустите его.









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