Генератор отчетов для oracle
dbForge Studio for Oracle provides professional reporting tools for analyzing Oracle databases. The reports can be used for the purposes of data exploration, data discovery, and decision-making.
Make balanced solutions with dbForge Report Builder that comes with dbForge Studio for Oracle. The tool offers a comprehensive environment for managing Oracle database reports and visualizing for business intelligence. dbForge Report Builder boasts:
- Support for Command-Line Interface
- Export to different formats
- Rich customization options
dbForge Compare Bundle
Handle all changes in your Oracle databases easily with dbForge Compare Bundle. Save yourself hours of work comparing and deploying databases—and save up to 30% on bundle purchase.
Оглавление
Редактирование бланка
Редактирование входных бланков происходит в два этапа. На первом этапе Вы делаете макет отчета в программах, в которых это делать наиболее удобно. Для RTF это, естественно, Word, для HTML я использую FrontPage. В любом случае Вы вырисовываете будущую бумажку в том виде, в котором хотите ее видеть, благо для этого есть все необходимые средства. Непосредственно в бланке размечаете секции отчета и проставляете метки запросов данных.
На втором этапе происходит незначительная (но, к сожалению, необходимая) доработка бланка в обычном текстовом редакторе на низком уровне. Этот этап необходим, потому что высокоуровневые средства не всегда корректно сохраняют документы с точки зрения генератора отчетов.
Например, генератор ни за что не догадается, где начинается секция BODY, если Word сохранит управляющий тэг секции в виде:
Еще одной причиной является необходимость наставить перед метками запросов данных управляющие RTF слова, указывающие конкретный русскоязычный шрифт. Word по умолчанию сохраняет метки @0001, @0002, . в англоязычном шрифте (дурак). Поэтому, если на место такой метки вставить русский текст, то получается абракадабра.
Низкий уровень (Текстовый редактор)
Воспринимайте этот раздел просто как инструкцию.
1) Сделайте резервную копию бланка.
2) Загрузите бланк любым текстовым редактором (я люблю MultiEdit).
4) Проанализируйте эти вхождения, если это тэги для генератора VKRep, на предмет возможности распознать их генератором. Если попадаются варианты типа:
То их нужно РУКАМИ привести к виду:
Т.е. просто взять и выкинуть лишнее.
5) Найдите при помощи стандартных механизмов поиска в редакторе все вхождения символа @.
6) Проанализируйте метки запросов данных на неразрывность. Выражения типа @0 01 недопустимы. Поправьте их тоже руками до вида @0001.
7) Найдите в RTF документе описание кириллического шрифта. Например:
(Я это делаю обычным поиском по вхождению слова Cyr). Идентификатор \f31 по всему документу будет определять именно этот шрифт. К сожалению, Word перед метками при сохранении документов не ставит никаких шрифтов (что значит "взять шрифт по умолчанию"), даже если конкретно указать шрифт для метки. Поэтому приходится это делать вручную. Сделать это можно двумя способами. Либо просто поменять шрифт по умолчанию на кириллический, либо перед каждой меткой запроса данных поставить идентификатор шрифта.
Я обычно пользуюсь вторым способом.
Делаю я это путем поиска и замены "@" на "\f31 @".
Первый способ состоит в том, чтобы поменять шрифт по умолчанию. Для этого необходимо заменить
На самом деле это проще и лучше.
8) Сохраните документ при выходе из текстового редактора.
9) Попробуйте загрузить получившийся бланк в Word. Если удачно, то ВСЕ. Подготовка бланка закончена.
Если неудачно - у Вас есть резервная копия.
10) Для HTML все совсем тривиально. После макетирования бланка отчета в какой-либо сильной программулине (FrontPage, например) Вы входите в текст HTML текстовым редактором и просто вручную проставляете всю необходимую разметку для генератора и метки запросов данных, руководствуясь следующими простыми правилами:
Report usage
After you create a report, you can choose what to do next: print it, save for future use, send it by e-mail, or export to Excel, HTML, CSV, PDF, RTF, and other formats.
If you need more information on creating reports or an Oracle reports example, you can refer to the comprehensive and full documentation provided with the application. As for the Oracle reports example, you can get a separate one for creating each type of report — simple, data-aware, and master-detail.
Высокий уровень (WinWord)
. . @0001 . . @0002 . . ~FieldName~ .
Внутри секции может быть любой текст, любое форматирование, таблицы, рисунки, и вообще все что угодно. (Рисунки лучше делать по ссылке). Нумерация меток запросов данных в каждой секции начинается с 1. Одна и та же метка может быть поставлена несколько раз. В этом случае генератор несколько раз запросит данные по одной и той же метке.
Исключительно для удобства и для наиболее вероятного попадания тэга отчета в RTF секцию тэги отчета я выделяю специальным образом - какими-нибудь разными цветами и скрытыми шрифтами. Скрытые шрифты удобны, если Вы захотите посмотреть свой бланк БЕЗ управляющих тэгов.
Метки запросов данных могут быть не только номерные, но и символьные - ~FieldName~.
Имена символов заключаются в тильды и могут иметь любые смысловые значения, которые Вы в них вложите на стадии реагирования на запросы данных.
Шапки таблиц для каждой страницы отражаются в колонтитулах. Word может различать колонтитулы первой и последующих страниц, что весьма удобно. Информация о колонтитулах лежит в FILEHEADER-е, и поэтому в колонтитулы тоже можно вделывать метки запросов данных.
При желании Вы можете поместить в бланк фиктивную секцию с какой-то справочной информацией. Такие секции генератор просто игнорирует:
Комментарии
Пока я писал генератор на PL/SQL, я заложил в него возможность обрабатывать ДИНАМИЧЕСКИЕ секции. Это секции с именами, которые Вы даете сами, и Вы же определяете, когда необходимо вывести динамическую секцию в выходной поток.
Вот пример определения динамической секции:
. . @0001 . . @0002 . . ~FieldName~ .
Выводится секция (а правильней сказать, должна выводиться) вызовом OutSection('MYSECTION'). К сожалению, пакет DBMS_SQL, при помощи которого реализован механизм реагирования на запросы, не реентерабелен, т.е. не позволяет повторных вхождений. И поэтому возможность вывести динамическую секцию просто отсутствует для пакета VKRep на PL/SQL .
Если Вас сильно беспокоит отсутствие подобной возможности, попробуйте переписать VKRep с использованием Native dynamic SQL.
Редактирование бланка для HTML отличается лишь тем, что все управляющие тэги для генератора ставятся на низком уровне - в текстовом редакторе.
Documenter
This Oracle DB tool automatically generates the documentation of an entire Oracle database in just a few clicks. For your convenience, it supports HTML, PDF, and MARKDOWN formats.
This Microsoft Visual Studio plugin was designed to help simplify all of your tasks related to Oracle database development, management, and administration in your favorite IDE. With its help, you can explore and maintain your Oracle databases, design compound SQL statements and queries, and manipulate data in different ways.
Founded in 1997, Devart is currently one of the leading developers of database management software, ALM solutions and data providers for most popular database servers.
Пакет VKRep
Если не рассматривать всякую шушеру, до которой Вы, несомненно, докопаетесь (но потом), то можно считать, что пакет VKRep состоит из единственной функции:
PROCEDURE ReportExecute(pCallBackProcName IN VARCHAR2, pInputBlank IN CLOB, pOutputReport IN OUT CLOB);
Функция принимает 3 параметра. Первый параметр - это символьное имя функции обратного вызова, через которую, собственно, проходят все события при работе по построению отчета. Эта функция прописывается Вами - и она и есть ПОСТРОЕНИЕ ОТЧЕТА.
Оставшиеся 2 параметра - CLOB значения с входным бланком и выходным отчетом.
Функция ReportExecute производит разбор входного бланка с целью выявления секций отчета, после чего запускает цикл, в котором поочередно пытается вывести в выходной CLOB определенные Вами секции.
На этом этапе происходит два важнейших события - генератор через определенную Вами функцию обратного вызова сообщает перед входом в цикл поочередного копирования секций о том, что необходимо перевести Ваш источник данных (скорее всего, открытый курсор, хотя и не обязательно) на начало. Вы должны ответить при этом, достигнут ли конец данных.
При входе в цикл копирования генератор через ту же функцию обратного вызова делает запросы на перемещение источника данных. При этом Вы опять должны указать достижение конца данных. И если таковое имеет место, то процесс копирования заканчивается, и генератор выходит из цикла.
Функция обратного вызова, через которую проходят ВСЕ запросы, должна иметь следующий прототип:
PROCEDURE ( pMessage IN INTEGER,
pW IN INTEGER,
pL IN INTEGER);
Как видите, очень напоминает оконную процедуру, хорошо знакомую программерам под Windows. И это естественно - первая реализация моего генератора была написана на С, и в качестве функции обратного вызова использовалась оконная процедура какого-либо окна на клиентском приложении.
Это не единственные два события, которые генерирует тело процедуры ReportExecute. В схеме событий присутствуют такие как WM_REP_START_REPORT и WM_REP_END_REPORT, которые определяют моменты времени начала и завершения построения выходного CLOB-а.
Вышеописанную схему перемещения по данным можно представить диаграммой:
Копирование секции начинается с уведомления о том, что генератор приступил к копированию секции ( SECTION_BEGIN ). Следующее событие ( SECTION_CHECK ) спрашивает, а копировать ли вообще данную секцию. Секция BODY по умолчанию копируется всегда, чего не скажешь, например, о секции GROUP_FOOTER, поэтому именно в событии SECTION_CHECK Вы должны указать конкретно, когда копировать подобные секции - по изменению ключевого выражения для группы.
Если событие ( SECTION_CHECK ) выдало положительный результат, происходит копирование, в процессе которого генератор может натыкаться на метки запросов данных, поэтому следующим событием будет событие запроса данных по меткам. Результатами отработки таких событий будут сами данные для отчета.
Data Generator
This is a smart and user-friendly GUI tool for generating and populating your Oracle schemas with meaningful test data. It includes 200+ predefined generators and supports all Oracle versions.
Запуск 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 для запуска отчетов в браузере.
Введение
Построение отчетов тем способом, которым я предлагаю, в действительности является концепцией. Просто идеей. На каком программном средстве реализована эта идея - не играет никакой принципиальной роли. Генератор отчетов в WinWord RTF и HTML, написанный на PL/SQL для ORACLE - лишнее тому подтверждение. И, естественно, это далеко не первая реализация этой блистательной идеи, пришедшей мне в голову несколько лет назад.
Помимо предоставляемого Вам генератора я, на сегодняшний момент, имею:
-Генератор отчетов в Excel SYLK формат;
-Генератор отчетов в Excel XLS формат 4-ой версии напрямую в файл XLS;
-Генератор отчетов в Excel XLS формат, используя технологию DDE;
-Генератор отчетов в Excel XLS формат, используя технологию COM;
Все это, плюс WinWord RTF и HTML, естественно, реализовано в следующих ипостасях:
-Набор компонент для Delphi;
-Набор компонент для C++Builder;
-Библиотека VKRep.dll с набором экспортируемых функций для систем программирования под Win32;
-Библиотека VKRep.dll как сервер автоматизации;
-Пакет VKRep на PL/SQL для ORACLE сервера (только RTF и HTML);
-Реализация в виде набора функций для DOS CLIPPER (только RTF и HTML).
Последнее выделено потому, что не многие продукты могут похвастаться возможностью построения отчетов под Windows из DOS среды.
Creating Oracle reports in a wink
You can create a simple data report without using any data source, or you can create a data-aware report basing on data available in database tables or views, or data that was received after executing some query. Master-detail report is a variety of data-aware report and can be also created using dbForge Studio for Oracle data report tool.
To create a report, you can either use Data Report Wizard, or create a report from scratch using the Blank Data Report option in the main menu. Also you can use the Send to option available in Data Editor and Database Explorer.
Conclusion
dbForge Studio for Oracle possesses advanced reporting features. With the tool, you can build various kinds of reports and pivot tables with parameters, customizable formatting, and calculated summaries. This highly useful functionality is provided by default in dbForge Studio for Oracle along with many other database management tools and features.
В статье рассматривается продукт VK Report для ORACLE, который является по своей сути генератором табличных отчетов в популярные на сегодняшний день форматы WinWord RTF (Rich Text Format) и HTML. Генератор оформлен в виде пакета и поэтому процесс построения отчета происходит непосредственно на сервере ORACLE. Легкость, простота, скорость и прелести форматов RTF и HTML - далеко не все преимущества подхода, реализованного автором в пакете VKRep.
Карпов Владислав, TALGAR
Schema Compare
Get the best tool for safe and convenient comparison and synchronization of Oracle database schemas. Analyze database structure differences and deploy all changes to your Oracle server.
Command line interface
dbForge Studio for Oracle allows creating data reports and scheduling automatic report delivery through the command line interface. You can use Windows task scheduler to setup periodical report generation and delivery on the basis of a report template.
Пакет построения отчета
Для того, чтобы сделать отчет, лучшим способом является написать пакет. В пакете Вы определяете источник данных. В примере это курсор:
CURSOR C_EMP IS
select
emp, dept
where
emp.deptno = dept.deptno
order by
emp.job;
V_EMP C_EMP%ROWTYPE;
И функцию обратного вызова для реагирования на запросы генератора отчетов:
PROCEDURE ExecuteReport(pMessage IN INTEGER, pW IN INTEGER, pL IN INTEGER);
Как видите, функция имеет формат, который мы обсуждали ранее. Для того, чтобы запустить генератор строить отчет, необходимо открыть курсор и вызвать процедуру пакета VKREP ReportExecute:
PROCEDURE StartReport IS
BEGIN
Test1.OpenSource;
VKREP.ReportExecute('Test1.ExecuteReport', InputBlank, OutputReport);
Test1.CloseSource;
END;
Для удобства это оформляется в виде отдельной процедуры.
При вызове ReportExecute в качестве параметров ей передается строка с полным именем (с указанием названия пакета) функции обратного вызова и два LOB - а. С бланком для отчета и выходным отчетом.
Как Вы понимаете, все самое интересное происходит именно в функции обратного вызова.
Рассмотрим события, через нее проходящие, более подробно.
IF pMessage = VKREP.WM_REP_MOVE THEN
IF pL = VKREP.MOVE_TOP THEN
PriorJob := '';
ELSE
PriorJob := V_EMP.JOB;
END IF;
FETCH C_EMP INTO V_EMP;
VKREP.ucCHECK := C_EMP%NOTFOUND;
END IF;
Возникает при итерациях цикла копирования. В параметре pL приходят константы VKREP.MOVE_TOP и VKREP.MOVE_NEXT. В обработчике считываются новые данные из курсора и заполняется переменная пакета VKREP.ucCHECK , которая служит флажком для выхода из цикла.
При копировании секции HEADER возникают два события запроса данных, потому что во входном бланке две метки запроса данных:
IF pMessage = VKREP.WM_REP_HEADER THEN
IF pL = VKREP.SECTION_DATA_REQUEST_BY_NUM THEN
IF pW = 1 THEN
VKREP.RequestStr := 'First parametr.';
ELSIF pW = 2 THEN
VKREP.RequestStr := 'Second parametr.';
END IF;
END IF;
END IF;
Для GROUP_HEADER нужно определить, когда выводить этот GROUP_HEADER, и ответить на запросы данных по номерам и по именам:
IF pMessage = VKREP.WM_REP_GROUP_HEADER THEN
IF pL = VKREP.SECTION_CHECK THEN
IF PriorJob <> V_EMP.JOB THEN
VKREP.ucCHECK := TRUE;
END IF;
END IF;
IF pL = VKREP.SECTION_DATA_REQUEST_BY_NAME THEN
VKREP.RequestStr := LTRIM(RTRIM(V_EMP.JOB));
END IF;
IF pL = VKREP.SECTION_DATA_REQUEST_BY_NUM THEN
IF pW = 1 THEN
SELECT AVG(SAL) INTO AVG_S FROM EMP WHERE JOB = V_EMP.JOB;
VKREP.RequestStr := TO_CHAR(round(AVG_S, 2));
END IF;
END IF;
END IF;
Таким образом, бланк вида blank.rtf аккуратно превращается в отчет вида Report.rtf
Аннотация: В этой лекции слушатель немного ознакомится со средой создания отчетов 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.
Основная идея
Давайте смоделируем процесс построения табличного отчета для самого простого случая, когда по какой-то таблице требуется получить отчет в текстовый файл (вспомним прекрасное время DOS). Итак, что мы делаем на интуитивном уровне? Перво-наперво рисуем в текстовом файле текстовым редактором бланк будущего отчета. Бланк мы размечаем специальным, только нам ведомым способом, разделяя тело бланка на секции. Допустим, что их будет только 3 - заголовок, секция, повторяющаяся для каждой записи таблицы, и замыкающая секция (по научному: REPORT_HEADER, BODY, REPORT_FOOTER - впрочем, обозвать их можно как хотите, но давайте привыкать к тому, как назвал их я). Внутри каждой секции будет какой-то текст и специальным образом определенные метки, вместо которых в будущий отчет встанут данные из таблицы.
Собственно построение отчета заключалось в том, что входной бланк по секциям копировался в выходной файл в цикле по таблице, и если программа копирования натыкалась на метку данных, то вставляла вместо метки информацию из таблицы.
Так делал я. Давно это было. Думаю, что и Вы занимались чем-то подобным.
Ну так вот, господа хорошие, с той поры ничего не изменилось.
Давайте присмотримся к файлу RTF изнутри.
Не будет откровением, если я скажу, что это просто текст. Например, такой:
Если необходимо выделить слово МАША жирным шрифтом, то текст будет выглядеть следующим образом:
То, что выделено фигурными скобками, называется группой. Группы могут быть вложенными друг в друга неограниченное число раз. Для выделения или форматирования текста используются управляющие слова. В нашем случае управляющее слово \b определяет для группы выделение жирным шрифтом.
RTF файл содержит заголовок, оформленный в виде RTF группы. В заголовке определяются колонтитулы, и он также содержит таблицы цветов и шрифтов, используемых внутри документа.
Того, что было сказано о внутренностях RTF формата, более чем достаточно.
Структура HTML документа еще более прозрачна, и на ней я вообще останавливаться не буду.
Проблема разметки входного бланка отчета в RTF или HTML формате на секции решается точно таким же образом, как она решалась в старом добром DOS.
Вы, наверное, уже обратили внимание на появление в бланке вместо имени МАША метки @0001. На это место будут помещаться данные из Вашего источника данных для отчета.
Вот и весь процесс.
На выходе мы получаем что-то типа этого:
МАША МЫЛА РАМУ
КАТЯ МЫЛА РАМУ
НАСТЯ МЫЛА РАМУ
СВЕТА МЫЛА РАМУ
Запуск отчета с помощью 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 , так как при запуске отчета отображается весь гипертекст , в котором указано имя, логин и пароль пользователя. Далее мы еще не раз вернемся к этой процедуре, а также рассмотрим пример, в котором устраним вышеописанный недостаток.
Oracle Developer Suite 10g – это полный набор интегрированных средств для разработки интернет-приложений, который включает в себя удобную интегрированную среду разработки со средствами моделирования, программирования на PL/SQL , Java , разработки компонентов, бизнес-анализа, составления отчетов и диаграмм. И, что очень важно, все эти средства используют общие ресурсы, что позволяет совместно работать над одним проектом группе разработчиков. В таблице 1.3 приведены компоненты (продукты) Oracle Developer Suite .
В состав Oracle Developer Suite также входит XML Developer 's Kit (XDK) – набор различных компонентов, утилит и интерфейсов для организации работы с XML -документами. Различают пять различных XDK:
- XDK for Java;
- XDK for JavaBeans;
- XDK for C;
- XDK for C++;
- XDK for PL/SQL.
Oracle Developer Suite поддерживает стандарт UML-моделирования объектных приложений, который позволяет моделировать классы и рабочие процессы с последующей генерацией кода для среды BC4J. Хранение моделей предусмотрено в общем репозитории Oracle , где удобно контролировать версии объектов.
Если у вас большой коллектив разработчиков, то для поддержки их работы в Oracle Developer Suite предусмотрен репозиторий , который централизованно хранит структурированные данные как объекты базы данных , а неструктурированные – как файлы и XML -документы. Репозиторий – это своего рода единое хранилище метаданных приложений, обеспечивающее параллельную работу разработчиков. Использование репозитория дает разработчикам возможность анализировать зависимости между объектами, контролировать использование общих компонентов. Для удобства работы с репозиторием предусмотрены такие функции, как просмотр архива версий, управление процессом обновления версий объектов, а также функции контроля зависимостей и управление конфигурациями.
Oracle Developer Suite содержит набор переносимых JavaBean-компонентов пользовательского интерфейса, разработку и поддержку веб-приложений. Для реализации этих возможностей разработчики могут использовать API-интерфейсы Java или User Interface XML (UIX).
Oracle Designer
Oracle Designer – это интегрированная CASE-среда для автоматизации процессов всех этапов полного жизненного цикла сложной прикладной системы, включая детальный анализ предметной области, проектирование, программирование, тестирование, оценку, сопровождение, обеспечение качества, управление конфигурацией, управление проектом, документирование системы, формулировку и анализ требований.
Oracle JDeveloper 10g
Oracle JDeveloper 10g – это интегрированная среда разработки для моделирования, разработки и отладки J2EE-приложений и веб-сервисов. Как и в случае с Oracle Forms , разработка приложений в JDeveloper существенно упрощена за счет использования мастеров, редакторов, инструментов моделирования и дружественного интерфейса. Также среди прочего следует отметить поддержку возможности интерактивной привязки данных к пользовательскому интерфейсу и автоматического развертывания в сервере приложений.
Oracle Reports
Oracle Reports – это мощный инструмент для разработки отчетов любой степени сложности на основе информации, хранящейся в базах данных или других источниках. Oracle Reports позволяет не только отображать информацию из БД, но и управлять внешним видом документа, а также сформировать различные типы документов с помощью мастеров. Вы также можете генерировать выходной файл в другом формате, таком как HTML, PDF, RTF, SPREADSHEETS или XML.
Oracle Warehouse Builder
Oracle Warehouse Builder (OWB) – это расширяемая многофункциональная CASE-среда, предназначенная для разработки и развертывания корпоративных хранилищ и витрин данных.
Oracle Discoverer
Oracle Discoverer – это инструмент для получения произвольных отчетов, формирования нерегламентированных запросов и анализа данных. Он обеспечивает быстрый и удобный доступ к информации, содержащейся в реляционных и многомерных хранилищах и витринах данных, а также в транзакционных системах, в том числе не обязательно работающих под управлением СУБД Oracle. С помощью Oracle Discoverer пользователь может получать необходимые ему данные в виде различных таблиц, графиков и диаграмм.
Oracle Business Intelligence Beans
Oracle Business Intelligence Beans – это набор компонентов JavaBeans, предназначенных для создания приложений бизнес-анализа. Взаимодействие с JDeveloper – "бесшовная" интеграция компонентов BI Beans. Компоненты Oracle Business Intelligence Beans позволяют создавать приложения бизнес-аналитики и использовать преимущества функциональности OLAP.
Oracle Forms Developer
Oracle Forms Developer – это мощное средство для быстрой разработки приложений, которые основаны на информации, хранящейся в базах данных или других источниках. Forms Developer содержит исчерпывающий набор инструментов для создания полнофункционального прикладного программного обеспечения, состоящего из форм, отчетов и деловой графики. Вы можете программировать вызов отчета, построенного с помощью Oracle Reports, по нажатии пункта меню или кнопки, или в форму может быть вставлен вывод диаграммы, сгенерированной с помощью Oracle Graphics. Такой модульный подход предоставляет максимальную гибкость при проектировании и разработке новых прикладных программ, а также для поддержания и улучшения существующих. Forms Developer имеет большое количество различных мастеров для быстрого создания объектов. Если вы разрабатываете приложение в Forms, то в первую очередь вы избавляете себя от написания большого количества кода, так как все основные операции взаимодействия с БД уже автоматизированы.
Oracle Forms и другие инструменты Developer оптимизированы так, что имеют и используют множество новых и мощных свойств текущего сервера Oracle, а также средства разработки приложений для ввода, доступа, изменения или удаления данных из БД Oracle в реальном времени. Ниже приведены другие особенности Forms Developer.
- Деление приложения – в зависимости от ситуации вы можете хранить ваши PL/SQL-модули на сервере или в приложении. Вы можете перетаскивать объекты как между модулями, так и в пределах модуля.
- Инструменты быстрой разработки – Forms Developer имеет большое количество различных мастеров для быстрого создания объектов. Когда вы разрабатываете приложение с помощью мастера, количество кода сводится к минимуму или его не требуется вообще, поэтому создание простейшего приложения может занимать считанные минуты.
- Гибкость и контроль исходного кода – менеджер конфигурации программного обеспечения (Software Configuration Manager – SCM), интегрированный с Forms Developer, предназначен для управления структурированными и неструктурированными данными и всеми типами файлов в рамках жизненного цикла разработки программного продукта.
- Масштабируемость – используя многозвенную архитектуру, вы можете масштабировать приложение от одного до десятков тысяч пользователей без надобности вносить в приложение какие-либо изменения. Вы также можете повысить масштабируемость приложения за счет использования функциональности сервера, связываемых переменных, курсоров, хранимых процедур, пакетов, DML- и DDL-операций.
- Поддержка Java, SQL, PL/SQL – Forms Developer поддерживает разработку на всех перечисленных языках.
- Повторное использование объектов – Forms Developer имеет очень удобную модель наследования, а также средства ее реализации, которые облегчают наследование различных признаков (атрибутов) от одного объекта другому, от одного приложения к другому, используя объектные библиотеки (Object Library) и подклассы.
- Набор встроенных пакетов – Forms Developer содержит множество пакетов, которые существенно упрощают разработку приложений, предоставляя такие возможности, как файловый ввод-вывод, подключение внешних библиотек.
Что касается различных версий Forms, то в этой книге будут упомянуты различные версии, одна из которых Oracle Forms 6i. Это единственная версия, поддерживающая три режима вывода формы на экран: терминальный, графический (GUI) и в браузере. Особенность такого приложения состоит в том, что в любом из перечисленных режимов оно может быть запущено без перекомпиляции. Каждая новая версия предоставляет много других новых и важных возможностей по сравнению с предыдущими версиями; так, например, если брать новшества, появившиеся в Oracle Forms 6i, то в отличие от более ранних версий здесь есть возможность интегрировать сформированные отчеты с офисными приложениями (Microsoft Word, Excel). Также вам предоставляется возможность использовать мощные средства программирования, предоставляемые OLE-сервером приложений.
Однажды созданное вами приложение в Oracle Forms на платформе Windows может работать на таких платформах, как Linux, Mac Os, AIX и многих других. Другими словами, приложение, разработанное в Forms, – кросс-платформенное и может работать под управлением любой операционной системы единственное требование – это перекомпиляция модуля. Все версии до Forms 6i включительно являются клиент-серверными и требуют установки клиентского программного обеспечения на всех компьютерах, работающих с необходимым приложением.
Приложения, созданные в Oracle Forms Developer, могут быть развернуты на любом уровне предприятия, также вы можете создавать решения для малого и крупного бизнеса, поддерживающие от одного до сотни одновременно работающих пользователей. Учитывая возможность расширения инструментария пользователем, с помощью Forms можно создать практически любое требуемое окружение базы данных Oracle.
Double your daily productivity with our Oracle database software – an advanced IDE that helps increase your PL/SQL coding speed and provides versatile tools to facilitate effective Oracle development and administration.
Data Compare
This tool was designed for easy and efficient comparison and synchronization of Oracle data. Just like in other dbForge tools, advanced functionality is packed in a simple, easy-to-use interface.
Читайте также: