Как открыть oracle forms из браузера
Интерактивное средство разработки Oracle Forms довольно давно представлен в продуктовой линейки Oracle (впервые он был задуман в конце 80х годов). Oracle Forms версии 4.5, 5, 6 и 6i был средством исключительно для разработки клиент-серверных приложений, но начиная с версии 9i, он предназначен только для разработки web приложений. Данные web-приложения представляют из себя Java апплет запускаемый в браузере, который обращается к Forms Server на котором и выполняется вся логика приложения.
Oracle Forms, как и Oracle Apex, является решением для быстрого создания приложений под web.
Цель данной статьи – привести пример создания формы ввода данных для таблицы соответствия валют. Таблицы соответствия часто применяются при загрузке данных в корпоративное хранилище данных (КХД) для обеспечения согласованность данных. Например, когда необходимо однозначное определение соответствия значений существующего в КХД аналитического измерения и значений справочника, извлекаемого из системы-источника данных. Данная статья направлена на специалистов, ранее не знакомых с Oracle Forms.
Создание таблицы соответствия в базе данных
Примем следующий состав полей таблицы соответствия валют измерения КХД и справочника системы источника данных:
Наименование столбца таблицы | Тип данных | Комментарий |
---|---|---|
CUR_KHD | VARCHAR2(3) | Код валюты, определенный в КХД |
CUR_SRC | VARCHAR2(10) | Код валют, определенный в системе источнике данных |
EFCT_DT | DATE | Дата, с которой действует запись, определяющая соответствие двух кодов валют |
END_DT | DATE | Дата, до которой действует запись, определяющая соответствие двух кодов валют. Для активных записей принимает значение 01.01.2999 |
IS_ACT_IND | NUMBER(1) default 1 | Признак действующей записи. 1 – запись действует. 0 – запись не действует |
PPN_DT | DATE | Дата добавления записи |
UPD_DT | DATE | Дата изменения записи |
USR_LGN | VARCHAR2(50) | Логин пользователя добавившего/изменившего запись |
Ниже представлен SQL скрипт создания таблицы в базе данных Oracle и наполнения её несколькими записями. Для создания таблицы скрипт следует запустить в SQLPlus.
Установка Oracle Forms
- Необходимо скачать Oracle Forms с официального сайта Oracle. В версии 10g он входит в состав Oracle Developer Suite, в версии 11g в состав - Oracle Fusion Middleware. Далее все примеры приведены для версии 10g.
- Распаковать архив(ы).
- Запустить установку (setup.exe)
- В ходе установки определить Oracle Home (можно оставить предлагаемый по умолчанию).
- На закладке выбора типа установки выбрать Complete.
- Далее следовать указанию мастера установки.
- После необходимо прописать нужную БД в файл tnsnames.ora (ORACLE_HOME\NETWORK\ADMIN\).
В результате установки у Вас на компьютере появится web-сервер и среда разработки Oracle Forms.
Создание приложения ввода данных в таблицу соответствия
Ниже приведен перечень шагов, необходимых для выполнения при создании формы ввода значений таблицы соответствия MP_CURRENCY.
1. Запустить локальный web-сервер OC4J.
2. Открыть приложение Oracle Forms Builder. Показать пример.
3. Подключиться к БД. Нажать Ctrl+J. Ввести логин, пароль и имя БД.
4. Сохранить форму. Имя присвоить MP_CURRENCY_v1. Показать пример.
5. Создать канву: установить курсор на элемент Canvases и нажать кнопку.
6. Присвоить (как переименовывание файлов в проводнике Windows) имя MP_CURRENCY окну, канве, форме.
7. Вызвать панель свойств окна (правой кнопкой мышки щелкнуть на наименовании окна (MP_CURRENCY), в появившемся меню выбрать "Property Palette". В свойстве окна Title указать название формы на русском языке - "ТАБЛИЦА СООТВЕТСТВИЯ ВАЛЮТ". В свойстве Width - 400, в свойстве Height - 250. Показать пример.
8. В свойстве Background Color канвы (Canvas) установить значение gray20. Показать пример.
9. Создать визуальный атрибут с именем VSL_ATR_YELLOW и назначить свойство цвета фона «yellow». Показать пример.
10. Вызвать мастер добавления блока данных. Нажать правой кнопкой мышки на элемент Data Block в окне Object Navigator, в появившемся меню выбрать Data Block Wizard. Показать пример.
11. Используя мастер добавление блоков данных, выбираем создание блока данных на основе таблицы или представления (Table or View). Далее в выбираем таблицу MP_CURRENCY, добавляем все её поля в блок данных и нажимаем кнопку "Готово". Показать пример.
12. Отредактировать следующие свойства блока данных MP_CURRENCY (панель свойств вызывается по нажатию кнопки F4):
Number of Records Displayed – указать количество строк, которое будет отображаться на форме (в нашем примере укажем 10).
Show Scroll Bar – указать Yes.
Scroll Bar Canvas - указать канву, на которой будет располагаться Scroll Bar (в нашем примере это MP_CURRENCY).
13. Для элементов блока данных, которые будут отображаться на форме и не подлежать редактированию пользователями (в нашем примере это UPD_DT, PPN_DT, SRC_USR_LGN), установить следующие значения:
Enable установить No;
Number of Items Displayed установить 1;
Canvas установить MP_CURRENCY;
Background Color установить white;
Bevel установить Plain;
Font Name установить Arial;
Font Size установить 10;
Prompt Font Name установить Arial;
Prompt Font Size установить 8;
Width установить в 54 для UPD_DT, PPN_DT и в 100 для SRC_USR_LGN.
14. Для всех элементов блока данных, которые будут отображаться на форме и в которых предметный эксперт будет вводить соответствия (в нашем примере это CUR_KHD и CUR_SRC), установить следующие значения для свойств:
Current Record Visual Attribute Group установить VSL_ATR_YELLOW;
Canvas установить MP_CURRENCY;
Background Color установить white;
Bevel установить Plain;
Font Name установить Arial;
Font Size установить 10;
Prompt Font Name установить Arial;
Prompt Font Size установить 8.
15. Для всех элементов блока данных, которые будут отображаться на форме и в которые предметный эксперт будет вводить данные о датах активации записи срока ее действия (в нашем примере это EFCT_DT и END_DT) установить следующие значения для свойств:
Current Record Visual Attribute Group установить VSL_ATR_YELLOW;
Canvas установить MP_CURRENCY;
Required установить в No;
Background Color установить white;
Bevel установить Plain;
Font Name установить Arial;
Font Size установить 10;
Prompt Font Name установить Arial;
Width установить 54;
Prompt Font Size установить 8.
16. Для элемента IS_ACT_IND (данный элемент устанавливает признак активной или не активной записи) установить следующие значения для свойств:
Item Type установить Check Box;
Value when Checked установить 1;
Value when Unchecked установить 0;
Initial Value установить 1;
Width установить 12;
Canvas установить MP_CURRENCY.
17. Для всех элементов типа дата (в нашем примере это EFCT_DT, END_DT, UPD_DT, PPN_DT) установить для свойства Format Mask следующее значение «DD.MM.YYYY».
18. Открыть канву (двойной клик левой кнопкой мышки) и разместить элементы на нем (путем перетягивания мышкой) так, как пользователю будет удобно работать с формой.
19. Подобрать размеры канвы и размеры окна (путем перетягивания их области мышкой).
20. Дать названия полям на русском языке (двойной клин на названии или свойство Prompt элемента). Показать пример.
21. Добавить триггер WHEN-NEW-FORM-INSTANCE (содержимое триггера будет выполняться при запуске формы): установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
22. Добавить триггер PRE-INSERT (содержимое триггера будет выполняться перед вставкой строк(и) в таблицу БД) на блок данных: установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
23. Добавить триггер PRE-UPDATE (содержимое триггера будет выполняться перед применением изменений в таблице БД) на блок данных: установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
24. Добавить триггер WHEN-CHECKBOX-CHANGED (содержимое триггера будет выполняться при нажатии/отжатии "галочки") на элемент IS_ACT_IND: установить курсор на элемент Triggers, нажать правую кнопку мышки, в появившемся окне меню выбрать нужный триггер. В теле триггера написать следующий код:
26. Сохранить форму: нажать комбинацию клавиш Ctrl+S.
27. Запустить форму для тестирования: нажать комбинацию клавиш Ctrl+R. Если Вы запускаете форму первый раз, то Вам будет предложено установить Oracle Java Initiator. Показать пример.
28. Используя кнопки панели управления, провести тестирование работоспособности формы на возможность ввода данных, изменения и удаления данных.
Все версии Forms, начиная с Forms 4.5 и заканчивая Forms 6i, могут запускаться в пользовательском интерфейсе (GUI). Для того чтобы запустить форму в GUI, выполните следующие действия:
- Запустите Oracle Forms командой f60desm или frmbld . После этого появится окно Form Builder ( рис. 3.4, в котором вы можете выбрать параметры запуска:
- Use the Data Block Wizard (Создать форму с помощью мастера) – вам будет предложено создать форму с помощью мастера Data Block Wizard и Layout Wizard;
- Build a new form manually (Создать форму вручную) – после выбора этого параметра запустится "чистая" среда, в которой не будет блоков данных, а только стандартный набор инструментов и модуль;
- Open an existing form (Открыть существующую форму) – выбрать форму из списка существующих форм, после чего запустится выбранная вами форма;
- Build a form based on template – запускает Designer с предложением открыть форму;
- Run the Quick Tour (concepts) – запускает интернет-страницу (*.htm) с кратким обзором новых возможностей продукта Developer как в целом, так и отдельных его опций. При выборе этого пункта кроме страницы Интернет запустится Designer с опцией Build a new form manually ;
- Explore the Cue Cards (tasks) – запускает Forms Designer, с такой же опцией, как в предыдущем случае; также в Designer сразу после запуска отобразится не только Object Navigator, но и окно справки Cue Cards, в котором вы можете найти справку о первичной работе в Forms (запуск форм, создание объектов).
- мастер блока данных ( Data Block Wizard );
- мастер разметки ( Layout Wizard ).
Запуск формы в терминале и в GUI
Все ранние версии Forms до Forms 6i включительно поддерживают терминальный режим. Форма, запускаемая в терминальном режиме, имеет монохромный режим отображения. При выводе на экран терминала форма подавляет и не отображает те элементы, которые не поддерживаются терминалом, а именно: элементы псевдографики, OLE-контейнеры, ActiveX, Chart Item, Image Item, Bean Area. Также ранние версии не поддерживали некоторые события интерфейса, такие как передвижение и клик мыши.
Для того чтобы запустить форму, в командной строке выполните следующие действия:
- Откройте форму из предыдущего примера и сохраните ее как Form_Term. Скомпилируйте модуль.
- Запустите командную строку, например, SHELL, и выполните следующую команду:
Вы можете использовать в командной строке параметры настройки запуска, включая их в команду f60run .
Для запуска формы в командной строке достаточно выполнить команду:
Запуск формы в браузере
Вы можете избавиться от этой ошибки, если перед запуском формы запустите экземпляр OC4J . Запуск экземпляра OC4J производится командой DevSuiteHome_1\j2ee\DevSuite\startinst.bat .
Что такое OC4J , и почему без него невозможно запустить форму? OC4J ( Oracle Application Server Containers for J2EE ) – это компонент Oracle AS, который является основой поддержки Java-технологий в соответствии со спецификацией Java 2 Enterprise Edition. Контейнеры OC4J написаны полностью на Java и выполняются на виртуальной машине Java, входящей в состав JDK 1.2 или 1.3. OC4J – это полная поддержка J2EE , включающая транслятор JSP, механизм выполнения Java- сервлетов и контейнер Enterprise Java Beans (EJB).
Итак, для того чтобы запустить первую форму, выполните следующие действия:
- Запустите OC4J . После запуска OC4J у вас на экране появится Java Console ( рис. 3.6).
- Запустите Forms Builder и откройте форму Test.fmb.
- Вызовите диалог соединения для подключения к БД командой File | Connect или с помощью кнопки "Соединение" на панели инструментов.
- Запустите форму командой Run Form по щелчку кнопки на панели инструментов или командой меню Program | Run Form.
После запуска формы на экране появится браузер, в который будет загружен апплет, отображающий форму. В Java Console сразу же после запуска формы появятся новые записи:
На рис. 3.7 кружочками показаны основные элементы, которые вы видите при отображении формы:
- браузер (Browser) ;
- Java applet ;
- консоль окна – строка состояния (Console);
- URL;
- панель инструментов меню (Menu Toolbar);
- меню по умолчанию (Default Menu);
- кнопка – графический элемент формы "Кнопка" (Item Button);
- окно (Window).
Важно: если при запуске формы в браузере появилась надпись "ORACLE FORMS", апплет не загрузился и браузер самостоятельно закрылся, то вам необходимо переставить Jiniator.
Закрытие браузера
После того как вы нажимаете кнопку EXIT_FORM на главной панели инструментов, форма закрывается, а браузер остается. Для того чтобы избавиться от этой проблемы, можно воспользоваться одним из самых распространенных способов, а именно создать файл *.html, который выполняет процедуру закрытия браузера. Выполните следующие действия:
Аннотация: В этой лекции слушатель немного ознакомится со средой создания отчетов Oracle Reports, научится запускать отчеты и передавать параметры из приложения в отчет. В лекции будут рассмотрены различные способы запуска отчетов.
Oracle Reports Developer (Построитель отчетов) – это мощное средство для проектирования отчетов в составе среды Oracle Developer . Оно позволяет структурировать и форматировать информацию на основе разных стилей, как из базы данных , так и из файловой системы, а также комбинировать ее с текстом и графикой для представления в отчетах на бумаге и в веб-среде, используя Oracle AS Services. Oracle Reports предполагает создание отчетов , работающих как в архитектуре " клиент-сервер ", так и в Web , для построения которых можно использовать Java- апплеты или Java-скрипты. Также вы получаете возможность получения различных типов выходных отчетов в форматах Adobe Acrobat Reader (*.pdf), Microsoft Excel (*.xls), HTML и многих других.
В этой главе мы рассмотрим, как Forms можно связать с построителем отчетов и какие для этого предусмотрены возможности. Между двумя этими продуктами, как, впрочем, и между остальными продуктами Oracle Developer , существует тесная взаимосвязь и гибкий обмен данными . Обмениваясь данными с Reports, вы делаете это аналогично тому, как вы бы это делали, передавая параметры в другую форму. Далее будут рассмотрены темы:
- Запуск Oracle Reports из Oracle Forms .
- Передача параметров из Oracle Forms в Oracle Reports.
Запуск Oracle Reports из Oracle Forms
В Oracle Forms в зависимости от версии Reports можно запустить через две различные процедуры:
Сначала мы с вами рассмотрим процедуру RUN_PRODUCT , которая предназначена в первую очередь для запуска отчетов из версий Forms 6i и ниже. Эта процедура поддерживается для совместимости и в более поздних версиях Forms. С помощью этой процедуры вы можете запускать отчет, передавать в него параметры и группы записей. Ниже приведен синтаксис этой процедуры, который может быть оформлен в двух вариантах, отличающихся двумя выделенными параметрами.
Синтаксис процедуры RUN_PRODUCT
Описание принимаемых параметров:
PRODUCT – имя запускаемого продукта, им может быть Graphics, Forms или Reports;
DOCUMENT – имя исполняемого модуля, который должен быть исполнен вызываемым продуктом;
COMMODE – определяет тип (режим) запуска, который будет использован для вызываемого продукта. Вы можете устанавливать один из нижеперечисленных режимов:
- SYNCHRONOUS (синхронный) – указывает на то, что управление будет передано форме только после закрытия вызываемого продукта;
- ASYNCHRONOUS (асинхронный) – указывает на то, что управление форме будет возвращено немедленно после отображения модуля, то есть вы можете работать одновременно и с запущенным модулем, и с формой;
EXECMODE – определяет режим выполнения вызываемого продукта. Если вызывается Reports или Graphics , то режим можно устанавливать BATCH или RUNTIME ; если вы запускаете Forms, то режим выполнения всегда RUNTIME ;
LOCATION – определяет место размещения вызываемого модуля, им может быть файловая система ( FILESYSTEM ) или База Данных ( DB );
PARAMLIST_NAME OR PARAMLIST_ID – определяет список параметров, передаваемых вызываемому продукту. В качестве принимаемого параметра вы можете указать имя списка параметров или его идентификатор . Если вы не предаете никаких параметров, то можно написать NULL ;
Теперь, когда мы знаем синтаксис процедуры и все необходимые параметры, выполним несколько примеров различной сложности, которые приведены ниже.
- Если вы просто хотите запустить отчет без передачи параметров , вам достаточно будет написать в вашей программе одну строчку, как показано в листинге 7.1 "Запуск отчета без передачи параметров ".
Как показано в листинге 7.2 "Запуск и передача параметров в отчет", вы можете передавать различные типы параметров:
- значения элементов;
- значения параметров;
- значения глобальных переменных;
- значения групп записей ;
- значения переменных;
- системные параметры Reports.
Совет: используйте параметры для передачи значений в лексические параметры Reports, это позволит вам не только передавать значения критерия выборки, но и добавлять другие конструкции к фразе SELECT , такие как WHERE , GROUP BY , ORDER BY , HAVING , CONNECT BY и START WITH .
Остановимся подробнее на последнем пункте, так как все остальные варианты понятны и были уже рассмотрены ранее. Системные параметры Reports – это те параметры, которые управляют выполнением, отображением и формированием отчета. Используя их определения при добавлении параметра в список, вы тем самым получаете возможность влиять на ход выполнения вызываемого продукта. Далее перечислены основные системные параметры.
COPIES – определяет число копий, которое будет задано, когда отчет будет отправлен на печать.
CURRENCY – определяет индикатор денежного символа.
DESFORMAT – определяет выходной формат отчета. Oracle Reports поддерживает следующие форматы:
- PDF (Forms9i и выше);
- HTML;
- RTF ;
- HTMLCSS;
- XML (Forms9i и выше);
- DELIMITED ;
- DELIMITEDDATA;
- SPREADSHEETS (Forms10g).
DESNAME – определяет имя выходного драйвера (имя файла, имя принтера, mail пользователя). Например, если вы хотите вывести отчет на матричный принтер, вам необходимо указать имя файла *.prt – dec180 .
DESTYPE – определяет тип вывода отчета. Вы можете определить следующие типы: просмотр, файл , mail, принтер или вывод на просмотр с использованием PostScript .
MODE – определяет режим запуска отчета: растровый ( BITMAP ) или символьный ( CHARACTERS ).
ORIENTATION – определяет ориентацию печати, допустимы следующие значения:
- DEFAULT ;
- PORTRAIT ;
- LANDSCAPE .
PRINTJOB – управляет отображением диалога печати перед запуском отчета.
THOUSENDS – указывает символ разделитель.
Используя вышеописанные параметры, вы сможете управлять печатью, например, вывести печать в файл: пример показан в листинге 7.3 "Формирование отчета в файл".
Вы можете вывести отчет немедленно на печать без предварительного просмотра или формирования файла, как показано в листинге 7.4 "Формирование отчета на принтер без предварительного просмотра".
Теперь, когда мы рассмотрели процедуру RUN_PRODUCT и запуск отчета в GUI, перейдем к рассмотрению встроенной подпрограммы WEB. SHOW_DOCUMENT для запуска отчетов в браузере.
Запуск отчета с помощью WEB.Show_Document
Встроенная процедура WEB.SHOW_DOCUMENT , как уже было сказано выше, предназначена для запуска отчета в браузере. Эта процедура поддерживается в версиях Forms 6i и выше. Из всех перечисленных в этой главе эта процедура является наиболее удобной и компактной в кодировании, и нижеприведенный синтаксис лишний раз это доказывает.
- URL – определяет имя ресурса, с которого будет загружен документ. URL в данном случае — это не только адресная строка, но и набор передаваемых параметров, так как в определении URL используются системные параметры ( DESNAME , DESTYPE и другие).
- DESTINATION – назначение целевого окна. Различают следующие назначения:
- _SELF – заставляет отчет загружаться в ту же самую структуру или окно, что и первоисточник.
- _PARENT – заставляет отчет загружаться в родительское окно или frameset , содержащий ссылку гипертекста. Если ссылка находится в окне или верхнем уровне фрейма, то _PARENT отрабатывает аналогично _SELF .
- _TOP – заставляет отчет загружаться в окно, содержащее гипертекстовую ссылку, заменяя все текущие фреймы, которые отражены в этом окне.
- _BLANK – загружает отчет в новое неименованное окно.
Строка URL в области определения Reports имеет свою особую специфику, так как является не просто адресной строкой с указанием места расположения ресурса, но и содержит перечень различных параметров. Ниже приведен синтаксис URL с перечислением возможных параметров:
Теперь, когда мы ознакомились с синтаксисом этой процедуры, попробуем ее в действии. В листинге 7.5 " Запуск отчета с помощью процедуры WEB.SHOW_DOCUMENT " приведен пример запуска отчета в Web .
Как вы уже, наверно, успели заметить, в URL помимо системных параметров можно передавать также и пользовательские параметры. К недостаткам такого метода запуска отчетов можно отнести адресную строку URL , так как при запуске отчета отображается весь гипертекст , в котором указано имя, логин и пароль пользователя. Далее мы еще не раз вернемся к этой процедуре, а также рассмотрим пример, в котором устраним вышеописанный недостаток.
This article shows how to run Oracle Forms 11g using OpenJDK 8 and IcedTea as a replacement for Java Web Start. It's not a supported solution, but it works.
The Problem
The Oracle Forms runtime is an applet, which has traditionally been run from a browser. Running Oracle Forms from a browser has become increasingly difficult over time due to browser compatibility issues. In 11g Forms it is still the only supported way to run Oracle Forms, but it is possible to run Oracle Forms 11g using Java Web Start, as described here.
If you are running Oracle Forms 12c, it is also possible to use Java Web Start in a supported manner, as it was baked into the product.
According to MOS Doc ID 1557737.1, users of Oracle Forms are allowed to use Java SE 8, including the updates without incurring additional costs.
Unfortunately Java Web Start has been removed from any version of Java after version 8, and if you want Java 8 security updates for any commercial desktops you must either pay support (but not for Forms, see above) for the Oracle JDK, or switch to OpenJDK 8. This introduces yet another issue as OpenJDK 8 doesn't ship with Java Web Start. There is no "javaws.exe" in the "JAVA_HOME\bin" directory.
Once again, if you are using Oracle Forms 12c there is a solution, which is to use the Oracle Forms Services Stand-alone Application Launcher (FSAL), but this doesn't support Oracle Forms 11g.
So how do you continue to use Java Web Start on a Windows desktop without having to pay for Java8 support? A possible option is to use IcedTea as a replacement for Java Web Start.
Software
Download a suitable OpenJDK distribution for Windows 10.
Download the latest IcedTea binary distribution. In this case it was version 1.7.1.
Installation
Install the AdoptOpenJDK by double-clicking on the MSI file. This results in the JAVA_HOME being placed under the "C:\Program Files\AdoptOpenJDK" directory.
Unzip the IcedTea distribution to a location of your choice. In this case I unzipped it under the "C:\utils\" directory.
For convenience I used a batch file to launch my applications containing the following environment variable settings, but these could be included in the user or system environment variables.
Running Forms
You will find a "javaws.bat" file in the "bin" directory of the IcedTea distribution, which is now in our path. This allows us to run a JNLP file like as follows.
With the correct environment variables and file association you should be able to double-click on the JNLP file to start it. In my case I used batch files that looked like this.
If you need access to something resembling the the "Configure Java" panel, you can run the "itweb-settings.bat" file.
Considerations
Oracle Forms 11g is only officially supported when running from a browser. It's not supported from Java Web Start and certainly not from IcedTea.
You may have to make some minor adjustments to your JNLP files, compared to running with Java Web Start. For example, when attempting to run the Banner application (from Ellucian) I might use the following "serverURL" parameter value.
When running though IcedTea, I had to include the full URL.
At this point I have no idea if all functionality is available using this method, and I'm not sure how stable it is. I've used it and it works, but that's as far as I've gone with it.
Аннотация: В этой лекции слушатель немного ознакомится со средой создания отчетов Oracle Reports, научится запускать отчеты и передавать параметры из приложения в отчет. В лекции будут рассмотрены различные способы запуска отчетов.
Oracle Reports Developer (Построитель отчетов) – это мощное средство для проектирования отчетов в составе среды Oracle Developer . Оно позволяет структурировать и форматировать информацию на основе разных стилей, как из базы данных , так и из файловой системы, а также комбинировать ее с текстом и графикой для представления в отчетах на бумаге и в веб-среде, используя Oracle AS Services. Oracle Reports предполагает создание отчетов , работающих как в архитектуре " клиент-сервер ", так и в Web , для построения которых можно использовать Java- апплеты или Java-скрипты. Также вы получаете возможность получения различных типов выходных отчетов в форматах Adobe Acrobat Reader (*.pdf), Microsoft Excel (*.xls), HTML и многих других.
В этой главе мы рассмотрим, как Forms можно связать с построителем отчетов и какие для этого предусмотрены возможности. Между двумя этими продуктами, как, впрочем, и между остальными продуктами Oracle Developer , существует тесная взаимосвязь и гибкий обмен данными . Обмениваясь данными с Reports, вы делаете это аналогично тому, как вы бы это делали, передавая параметры в другую форму. Далее будут рассмотрены темы:
- Запуск Oracle Reports из Oracle Forms .
- Передача параметров из Oracle Forms в Oracle Reports.
Запуск Oracle Reports из Oracle Forms
В Oracle Forms в зависимости от версии Reports можно запустить через две различные процедуры:
Сначала мы с вами рассмотрим процедуру RUN_PRODUCT , которая предназначена в первую очередь для запуска отчетов из версий Forms 6i и ниже. Эта процедура поддерживается для совместимости и в более поздних версиях Forms. С помощью этой процедуры вы можете запускать отчет, передавать в него параметры и группы записей. Ниже приведен синтаксис этой процедуры, который может быть оформлен в двух вариантах, отличающихся двумя выделенными параметрами.
Синтаксис процедуры RUN_PRODUCT
Описание принимаемых параметров:
PRODUCT – имя запускаемого продукта, им может быть Graphics, Forms или Reports;
DOCUMENT – имя исполняемого модуля, который должен быть исполнен вызываемым продуктом;
COMMODE – определяет тип (режим) запуска, который будет использован для вызываемого продукта. Вы можете устанавливать один из нижеперечисленных режимов:
- SYNCHRONOUS (синхронный) – указывает на то, что управление будет передано форме только после закрытия вызываемого продукта;
- ASYNCHRONOUS (асинхронный) – указывает на то, что управление форме будет возвращено немедленно после отображения модуля, то есть вы можете работать одновременно и с запущенным модулем, и с формой;
EXECMODE – определяет режим выполнения вызываемого продукта. Если вызывается Reports или Graphics , то режим можно устанавливать BATCH или RUNTIME ; если вы запускаете Forms, то режим выполнения всегда RUNTIME ;
LOCATION – определяет место размещения вызываемого модуля, им может быть файловая система ( FILESYSTEM ) или База Данных ( DB );
PARAMLIST_NAME OR PARAMLIST_ID – определяет список параметров, передаваемых вызываемому продукту. В качестве принимаемого параметра вы можете указать имя списка параметров или его идентификатор . Если вы не предаете никаких параметров, то можно написать NULL ;
Теперь, когда мы знаем синтаксис процедуры и все необходимые параметры, выполним несколько примеров различной сложности, которые приведены ниже.
- Если вы просто хотите запустить отчет без передачи параметров , вам достаточно будет написать в вашей программе одну строчку, как показано в листинге 7.1 "Запуск отчета без передачи параметров ".
Как показано в листинге 7.2 "Запуск и передача параметров в отчет", вы можете передавать различные типы параметров:
- значения элементов;
- значения параметров;
- значения глобальных переменных;
- значения групп записей ;
- значения переменных;
- системные параметры Reports.
Совет: используйте параметры для передачи значений в лексические параметры Reports, это позволит вам не только передавать значения критерия выборки, но и добавлять другие конструкции к фразе SELECT , такие как WHERE , GROUP BY , ORDER BY , HAVING , CONNECT BY и START WITH .
Остановимся подробнее на последнем пункте, так как все остальные варианты понятны и были уже рассмотрены ранее. Системные параметры Reports – это те параметры, которые управляют выполнением, отображением и формированием отчета. Используя их определения при добавлении параметра в список, вы тем самым получаете возможность влиять на ход выполнения вызываемого продукта. Далее перечислены основные системные параметры.
COPIES – определяет число копий, которое будет задано, когда отчет будет отправлен на печать.
CURRENCY – определяет индикатор денежного символа.
DESFORMAT – определяет выходной формат отчета. Oracle Reports поддерживает следующие форматы:
- PDF (Forms9i и выше);
- HTML;
- RTF ;
- HTMLCSS;
- XML (Forms9i и выше);
- DELIMITED ;
- DELIMITEDDATA;
- SPREADSHEETS (Forms10g).
DESNAME – определяет имя выходного драйвера (имя файла, имя принтера, mail пользователя). Например, если вы хотите вывести отчет на матричный принтер, вам необходимо указать имя файла *.prt – dec180 .
DESTYPE – определяет тип вывода отчета. Вы можете определить следующие типы: просмотр, файл , mail, принтер или вывод на просмотр с использованием PostScript .
MODE – определяет режим запуска отчета: растровый ( BITMAP ) или символьный ( CHARACTERS ).
ORIENTATION – определяет ориентацию печати, допустимы следующие значения:
- DEFAULT ;
- PORTRAIT ;
- LANDSCAPE .
PRINTJOB – управляет отображением диалога печати перед запуском отчета.
THOUSENDS – указывает символ разделитель.
Используя вышеописанные параметры, вы сможете управлять печатью, например, вывести печать в файл: пример показан в листинге 7.3 "Формирование отчета в файл".
Вы можете вывести отчет немедленно на печать без предварительного просмотра или формирования файла, как показано в листинге 7.4 "Формирование отчета на принтер без предварительного просмотра".
Теперь, когда мы рассмотрели процедуру RUN_PRODUCT и запуск отчета в GUI, перейдем к рассмотрению встроенной подпрограммы WEB. SHOW_DOCUMENT для запуска отчетов в браузере.
Запуск отчета с помощью WEB.Show_Document
Встроенная процедура WEB.SHOW_DOCUMENT , как уже было сказано выше, предназначена для запуска отчета в браузере. Эта процедура поддерживается в версиях Forms 6i и выше. Из всех перечисленных в этой главе эта процедура является наиболее удобной и компактной в кодировании, и нижеприведенный синтаксис лишний раз это доказывает.
- URL – определяет имя ресурса, с которого будет загружен документ. URL в данном случае — это не только адресная строка, но и набор передаваемых параметров, так как в определении URL используются системные параметры ( DESNAME , DESTYPE и другие).
- DESTINATION – назначение целевого окна. Различают следующие назначения:
- _SELF – заставляет отчет загружаться в ту же самую структуру или окно, что и первоисточник.
- _PARENT – заставляет отчет загружаться в родительское окно или frameset , содержащий ссылку гипертекста. Если ссылка находится в окне или верхнем уровне фрейма, то _PARENT отрабатывает аналогично _SELF .
- _TOP – заставляет отчет загружаться в окно, содержащее гипертекстовую ссылку, заменяя все текущие фреймы, которые отражены в этом окне.
- _BLANK – загружает отчет в новое неименованное окно.
Строка URL в области определения Reports имеет свою особую специфику, так как является не просто адресной строкой с указанием места расположения ресурса, но и содержит перечень различных параметров. Ниже приведен синтаксис URL с перечислением возможных параметров:
Теперь, когда мы ознакомились с синтаксисом этой процедуры, попробуем ее в действии. В листинге 7.5 " Запуск отчета с помощью процедуры WEB.SHOW_DOCUMENT " приведен пример запуска отчета в Web .
Как вы уже, наверно, успели заметить, в URL помимо системных параметров можно передавать также и пользовательские параметры. К недостаткам такого метода запуска отчетов можно отнести адресную строку URL , так как при запуске отчета отображается весь гипертекст , в котором указано имя, логин и пароль пользователя. Далее мы еще не раз вернемся к этой процедуре, а также рассмотрим пример, в котором устраним вышеописанный недостаток.
Читайте также: