Создадим отчет (документ) для двух таблиц связанных реляционной связью. Для этого будем использовать следующие таблицы: «d_dover2» и «d_dover_sp_naimen2». Первая таблица представляет собой шапку документа «Доверенность», а вторая - его табличную часть.
Запустим Oracle Reports Builder и сохраним чистый проект документа, как «d_dover2» с типом файла - *.rdf (рис. 132).
Рисунок 132 - Создание документа доверенность
Для того чтобы отобразить один документ в отчете нужно передать его номер в отчет для этого мы будем использовать «User Parameter» (пользовательские параметры).
Щелкнем мышью по узлу в «Object Navigator» по «Data Model», выделим пункт «User Parameter» и нажмем кнопку «+» в «Object Navigator», в результате будет создан параметр с именем «p_1», переименуем его в «P_KOD» (рис. 133).
Рисунок 133 - Создание передаваемого параметра из формы в отчет
Теперь нужно построить SQL-запросы для получения данных из БД, для этого мы не будем использовать мастер отчетов, а сделаем это вручную. Щелкнем правой кнопки мыши по проекту отчета в «Object Navigator» и выберем пункт «Report Editor», в результате чего появится следующее окно (рис. 134).
|
|
Рисунок 134 - Окно Report Editor
Опишем нужные нам кнопки на панели инструментов в «Report Editor»:
- кнопка для построения модели данных;
- кнопка для рисования отчета;
- кнопка для просмотра отчета.
Нажмем кнопку для построения модели данных и выполним следующие операции:
1. Построим запрос для шапки документа, для этого нажмем кнопку и щелкнем курсором мыши по рабочему полю «Report Editor» в результате чего должно появится окно для построения запроса (рис. 135).
Рисунок 135 - Окно ввода SQL запроса
Введем следующий текст:
select NDOC, DATAV, DATA_DEIS, (select fam||' '||im||' '||otch from s_fiz_lic where kod=d.kod_fiz_lic) as fio, (select naimen from s_org where kod=d.KOD_ORG) as org from d_dover2 d where kod=:P_KOD; |
Нажмем кнопку «OK» в результате чего в рабочей области «Report Editor» появится наш запрос (рис. 136).
2. Построим второй запрос для табличной части документа из таблицы «d_dover_sp_naimen2». Таким же образом как описано выше запустим построитель запросов и введем следующий текст:
select kod, kod_d_dover2, (select naimen from s_naimen where kod=d.kod_s_naimen) as naimen, kol, ed_izm from d_dover_sp_naimen2 d where kod_d_dover2=:P_KOD; |
Рисунок 136 - Окно с полученным SQL- запросом
Нажмем кнопку «ОК» (рис. 137).
Рисунок 137 - Окно Report Editor с созданными запросами к таблицам
После того как мы построили запросы, перейдем к дизайну самого документа, для этого нажмем кнопку на панели инструментов «Report Editor». В появившейся новой рабочей области мы увидим чистый для рисования документа (рис. 138).
Рисунок 138 - Окно Report Editor – Paper Layout
|
|
Рассмотрим инструменты для создания документа, которые нам будут нужны:
- повторяющийся фрейм – представляет собой область, куда будут помещаться поля из запросов, каждый фрейм должен обязательно быть привязаным к какому-нибудь запросу.
- поле данных – представляет собой поле для вывода данных, должно находится в области повторяющегося фрейма и связано с одним полем из SQL запроса, указанного во фрейме.
- текстовое поле предназначено для вывода текста в отчете, может находиться во фрейме и за пределами его.
- линия – предназначено для отображения линии в отчете
- панель для форматирования текста или полей данных
- инструменты для изменения цвета фона, текста, рамки текста или поля данных.
Перед началом работы нажмите кнопки и .
На первом этапе нарисуем шапку документа, для этого создадим повторяющийся фрейм в верхней части листа, щелкнем по нему, чтобы он выделился, и нажмем кнопку и выберем «Нет линии», чтобы рамка фрейма не отображалась. Двойным щелком по фрейму вызовем его свойства, в появившемся окне в свойстве «Source» выберем «G_NDOC» и закроем данное окно, т.е. запрос для шапки (рис. 139).
Теперь нам нужно расположить поля данных шапки в созданном нами фрейме. Создадим поле данных во фрейме, двойным щелчком по нему вызовим свойства данного поля и в свойстве «Source» выберем «NDOC», т.е. номер документа. Рамку для поля данных поставим «Нет линии». Теперь нужно создать подпись для этого поля, создадим элемент текст перед полем данных и введем для него подпись «Доверенность №», для элемента «текст» и поля данных поставим размер шрифта 12 (для этого их нужно сначала выделить) (рис. 140).
Рисунок 139 - Установка свойства Source повторяющегося фрейма
Рисунок 140 - Создания полей в повторяющемся фрейме
Таким же образом создадим поля данных и подпись для полей: дата выписки, дата действия, Ф.И.О., получатель. Для этого создадим 4 подписи с текстом «Дата выписки:», «Дата действия:», «Получатель:», «Доверенность выдана:», кроме этого 4 поля данных, у которых в поле «Source» установлено «datav», «data_deis», «fio», «naim_org». Необходимо у всех полей данных рамку установить в «Нет линии». В результате проделанных операций мы получим шапку документа (рис. 141).
Рисунок 141 - Вид «Шапки документа» доверенность
Ниже шапки документа расположим второй повторяющийся фрейм, для вывода табличной части документа из второго запроса. Двойным щелчком вызовем свойства данного фрейма и укажем свойство «Source» «G_KOD», а в свойстве «Vertical Elasticity» выберем «Variable» (рис. 142).
Рисунок 142 - Установка свойств повторяющегося фрейма
Так как в табличной части документа на необходимо выводить столбец с нумерацией строк, нам необходимо создать элемент «Summary Column» во втором запросе. Для этого перейдем на вкладку построения модели данных отчета, нажмем кнопку и щелкнем мышью по второму запросу, в результате появится еще одно поле в запросе (рис. 143).
Рисунок 143 - Создание суммарного столбца
Двойным щелком вызовем свойство данного поля и установим следующие свойства: «Function» - «Count», «Source» - «KOD» (рис. 144).
Рисунок 144 - Установка свойств суммарного столбца
Аналогичным образом, как описано выше, поместим поля данных по горизонтали в следующем порядке во втором фрейме со следующими свойствами «Source»: «Номер по порядку» - «CS1», «Наименование» - «NAIMEN», «Количество» - «KOL», «Единица измерения» - «ED_IZM». Установите свойства полей данных рамка в «Нет линии» и сделаем выравнивание каждого поля данных по центру, используя панель инструментов «Report Editor» (). Теперь необходимо добавить подпись над каждым полем данных в соответствии с его содержанием, сделаем выравнивание текста по центру (рис. 145).
|
|
Рисунок 145 - Вид документа «Доверенность» в Report Editor
Теперь нам нужно разделить поля данных по горизонтали линиями, чтобы во фрейме данные отображались не одним столбцом, а четырьмя. Для этого будем использовать элемент «Линия» (рис. 146).
Рисунок 146 - Установка разделительных линий между столбцами данных
Таим же образом, нарисуем еще две линии между полями: «Наименование» и «Единица измерения», «Единица измерения» и «Количество».
На последнем этапе создания документа нам необходимо создать надписи для подписей главного бухгалтера и руководителя предприятия, поочередно создадим элемент «текст» () и добавим в них текст «Главный бухгалтер», «Руководитель предприятия». Для отображения линии, где бухгалтер или руководитель будет расписываться, используйте элемент «Линия» (рис. 147).
Рисунок 147 - Создание подписей в документе «Доверенность»
Теперь можно посмотреть, что у нас получается в режиме просмотра, для этого нажмем кнопку , в результате должно появится окно для ввода параметров (рис. 148).
Рисунок 148 - Ввод параметров при запуске отчета
В данном окне мы должны ввести номер документа, который мы уже раннее создали (т.е. который уже есть в таблице «d_dover2»), после ввода номера документа, нажмем кнопку «Enter» и получим документ (рис. 149).
Рисунок 149 -. Документ «Доверенность» в режиме просмотра
Нажмем кнопку для сохранения документа.