Нажимаем пиктограмму . Пиктограмма расположена на вкладке Design.
Получаем диалог для создания запроса (DatasetandQueryDialog)
С помощью этого запроса выбираем поля type, subject, complect, id из таблицы f_dp_rkkbase.
Нажимаем кнопку ReadFields. В нижней части окна увидим отобранные поля. С помощью кнопок Up и Down можно менять порядок полей.
Если на вкладке DataPreview, нажать на кнопку RefreshPreviewData, то можно увидеть документы, которые будут попадать в отчет по запросу
Меняем порядок полей с помощь кнопок Up и Down
Можно выбрать поля, по которым будет производиться сортировка информации в отчете. В данном примере показано, как выбрать сортировку по полю id. Для этого на вкладке Outlineвыбираем SortFields
Появляется диалог NewSortFieldWizard, где выбираем поле id и нажимаем кнопку Finish
После того, как мы выбрали сортировку по полю id, предварительный просмотр будет выглядеть так:
Для данного примера удалим некоторые секции. Это можно сделать следующим образом:
Щелкаем мышкой по секции, которую необходимо удалить. Слева появляется выделение секции. При нажатии на правую клавишу, появляется меню. Нажимаем Delete. Удаляем все секции, которые нам не нужны для данного примера.
Оставляем секции Title, Column Header и Detail1.
Для вывода информации в отчет в данном примере используются два основных компонента: Text Field (динамическое поле) и Static Text (статический текст). Динамическое поле используется для вывода значений параметров или полей источника данных, а статическое - для вывода постоянного текста.
Используем Static Text для формирования заголовка отчета. Для этого на вкладке Palette выбираем Static Text и мышкой перетаскиваем в секцию отчета Title
Двойным щелчком мышки открываем поле и вписываем текст «Заголовок простого отчета»
Далее открываем вкладку Properties для данного текста. Выбираем Appearance и устанавливаем координаты области размещения текста в секции Title.
В секции Location\Position Type указываем координаты x и y области, где будет размещаться текстпо отношению к верхней границе секции Title (Fix Relative To Top).
В секции Size определяем размер области размещения: W - ширина области, h - высота области. Единица измерения - пиксель (px). Размер области — фиксированный: Stretch Type -No Stretch.
Для форматирования текста открываем секцию label Static Text
Выбираем шрифт текста, выравнивание и т.д.
Далее необходимо заполнить секции Column Header и Detail1. Это можно сделать разными способами. Сначала разместим поле id на форме отчета в секции Detail1 следующим образом:
Двойным щелчком мышки открываем Text Field. В открывшемся диалоге в Expression Editor вместо текста помещаем (двойным щелчком мыши) поле id - $F{id}.$F – обозначает поле.
Также, как и для статического текста определяем область размещения поля на форме отчета
Затем выбираем Text Field (для статического текста выбирали Static Text) и форматируем текст
При таком способе заполнения формы заголовок столбца необходимо заполнять дополнительно. Это можно сделать путем создания статического текста в секции Column Header.
Рассмотрим ещё один способ заполнения формы. Создадим столбец с заголовком «БД» и содержащим в секции Detail1 поле «complect». Для этого на вкладке «Outline» выбираем в секции Fields поле complect и перетаскиваем его в секцию Detail1
Далее форматируем заголовок столбца и его содержимое
Заполняем таким же образом столбцы «Тип документа» и «Заголовок»
Выбираем вкладку Preview и смотрим сформированный отчет
Чтобы создать границы строк и столбцов, необходимо создать границы ячеек. Для этого выделяем нужную ячейку и в свойствах ячейки (Properties) выбираем « Borders» и настраиваем границы (Рис. 2.4.3.2.15).
Настраиваем границы для всех ячеек
На вкладке Preview смотрим результат
На вкладке Source можно увидеть код XML отчета.
Для отчета в этом примере он будет выглядеть так, как показано ниже.
<?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version 6.0.4.final using JasperReports Library version 6.0.4 --> <!-- 2015-08-09T07:26:52 --> <jasperReportxmlns="http://jasperreports.sourceforge.net/jasperreports"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"name="Example1"pageWidth="595"pageHeight="842"columnWidth="555"leftMargin="20"rightMargin="20"topMargin="20"bottomMargin="20"uuid="4c68dd92-6073-4492-a024-c0af5108344f"> <propertyname="com.jaspersoft.studio.data.defaultdataadapter"value=" Cm Sochi JDBC on localhost"/> <queryStringlanguage="SQL"> <![CDATA[Select type, subject, complect, id from f_dp_rkkbase]]> </queryString> <fieldname="id"class="java.lang.Long"/> <fieldname="type"class="java.lang.String"/> <fieldname="subject"class="java.lang.String"/> <fieldname="complect"class="java.lang.String"/> <sortFieldname="id"/> <background> <bandsplitType="Stretch"/> </background> <title> <bandheight="49"splitType="Stretch"> <textField> <reportElementx="117"y="5"width="300"height="40"uuid="db72abba-b8f3-4702-88fa-9353e41e723d"> <propertyname="local_mesure_unitheight"value="pixel"/> <propertyname="com.jaspersoft.studio.unit.height"value="px"/> <propertyname="local_mesure_unitwidth"value="pixel"/> <propertyname="com.jaspersoft.studio.unit.width"value="px"/> </reportElement> <textElementtextAlignment="Center"verticalAlignment="Middle"> <fontfontName="Times New Roman"size="14"isBold="true"/> </textElement> <textFieldExpression><![CDATA["Заголовок простого отчета"]]></textFieldExpression> </textField> </band> </title> <columnHeader> <bandheight="42"splitType="Stretch"> <staticText> <reportElementx="60"y="0"width="110"height="40"uuid="fd40d18b-aaac-4c07-a301-67494fe4bab3"/> <boxpadding="3"topPadding="1"leftPadding="1"bottomPadding="1"rightPadding="1"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementtextAlignment="Center"verticalAlignment="Middle"/> <text><![CDATA[БД]]></text> </staticText> <staticText> <reportElementx="170"y="0"width="146"height="40"uuid="21ca3a0d-6c34-41f6-b353-c9dba5b315cc"/> <boxpadding="3"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementtextAlignment="Center"verticalAlignment="Middle"> <fontfontName="Times New Roman"size="12"/> </textElement> <text><![CDATA[Тип документа]]></text> </staticText> <staticText> <reportElementx="316"y="0"width="234"height="40"uuid="d562e6a7-bac9-4a1f-b6dc-4b6aeacaef5b"/> <box> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementtextAlignment="Center"verticalAlignment="Middle"> <fontfontName="Times New Roman"size="12"/> </textElement> <text><![CDATA[Заголовок]]></text> </staticText> <staticText> <reportElementx="20"y="0"width="40"height="40"uuid="13d2281f-e5d5-4291-9833-bb1971ddbd67"/> <boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementtextAlignment="Center"verticalAlignment="Middle"> <fontsize="12"/> </textElement> <text><![CDATA[id]]></text> </staticText> </band> </columnHeader> <detail> <bandheight="40"splitType="Stretch"> <textField> <reportElementx="20"y="0"width="40"height="40"uuid="6f2a3a63-d240-4844-8d67-7a553a5da3ac"> <propertyname="local_mesure_unitheight"value="pixel"/> <propertyname="com.jaspersoft.studio.unit.height"value="px"/> <propertyname="local_mesure_unitwidth"value="pixel"/> <propertyname="com.jaspersoft.studio.unit.width"value="px"/> </reportElement> <boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementtextAlignment="Center"verticalAlignment="Middle"> <fontfontName="Traditional Arabic"size="12"/> </textElement> <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression> </textField> <textField> <reportElementx="60"y="0"width="110"height="40"uuid="caff384d-e033-4e38-be01-969d93dacad7"/> <boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementtextAlignment="Left"verticalAlignment="Middle"> <fontfontName="Times New Roman"size="12"/> </textElement> <textFieldExpression><![CDATA[$F{complect}]]></textFieldExpression> </textField> <textField> <reportElementx="170"y="0"width="146"height="40"uuid="b4a80027-8dfd-4987-890d-c616644894eb"/> <boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementverticalAlignment="Middle"> <fontfontName="Times New Roman"size="12"/> </textElement> <textFieldExpression><![CDATA[$F{type}]]></textFieldExpression> </textField> <textField> <reportElementx="316"y="0"width="234"height="40"uuid="438487e5-c811-46fc-add4-1d43fd0d96b1"/> <boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3"> <topPenlineWidth="0.6"/> <leftPenlineWidth="0.6"/> <bottomPenlineWidth="0.6"/> <rightPenlineWidth="0.6"/> </box> <textElementverticalAlignment="Middle"> <fontfontName="Times New Roman"size="12"/> </textElement> <textFieldExpression><![CDATA[$F{subject}]]></textFieldExpression> </textField> </band> </detail> </jasperReport> |
Создаем отчет Example2 с источником данных Cm Sochi JDBC on localhost, тем же, что и в примере Example1. Информацию теперь будем получать из двух таблиц: f_dp_rkkbase и f_dp_rkk (Рис. 2.2.4.1.). Запрос будет выглядеть следующим образом:
Select rkkbase.type, rkkbase.subject, rkkbase.complect, rkkbase.id, rkk.regnumprist || rkk.regnumcnt || rkk.regnumfin as regNumber from f_dp_rkkbase rkkbase join f_dp_rkk rkk on rkkbase.id=rkk.id |
Из таблицы f_dp_rkkbase выбираем поля type, subject, complect, id. Из таблицы f_dp_rkk выбираем поля regnumprist, regnumcnt, regnumfin, если значение поля id в таблице f_dp_rkk совпадает со значением поля id в таблице f_dp_rkkbase.
Объединяем эти поля и получаем поле regNumber (rkk.regnumprist || rkk.regnumcnt || rkk.regnumfin as regNumber). Группировать информацию в отчете будем по полю complect, которое содержит алиас приложения.
Изменяем порядок полей. Поле complect должно быть первым в списке.
Выбираем вкладку Data preview и обновляем информацию - Refresh Preview Data
Указываем, по каким полям будет производиться сортировка. Для этого выбираем вкладку Sorting и нажимаем кнопку Add. Появляется диалог New Sort Field Wizard
Выбираем поле complect и нажимаем кнопку Finish. Таким же образом добавим в сортируемые поля regnumber
Форматируем шаблон
На вкладке Outline выбираем название отчета. По правой кнопке мышки получаем меню и выбираем пункт Create Group
Открывается диалог Group Band. Присваиваем группе название - DB и выбираем поле, по которому производим группировку - complect. Нажимаем кнопку Next.
В следующем диалоге указываем, что добавляем на форму секцию GroupHeader (Заголовок группировки)
Нажимаем кнопку Finish. На форме появляется секция DB Group Header1
Указываем, что в этой секции будет отображаться информация из поля complect-$F{complect}
Далее форматируем секцию с заголовком группы
Указываем границы
Выбираем цвет фона для секции. На вкладке Properties выбираем Appearance. Далее в секции Color выбираем поле BackColor и в открывшемся диалоге выбираем нужный цвет.
И в результате секция отображается. Обратите внимание на поле Transparent. Оно не заполнено.
Добавим в отчет настройки, которые позволят при печати выводить номер страницы. Для этого вернем в отчет удаленную ранее секцию Page Footer. На вкладке Outline выбираем Page Footerи нажимаем Add Band
На форме появится секция Page Footer. Добавим в эту секцию текстовое поле/
Форматируем текстовое поле. Дважды щелкаем по выделенному полю и в открывшемся диалоге заполняем поле Expression: $V{PAGE_NUMBER}
В этом выражении $V(PAGE_NUMBER) – встроенная переменная, которая выводит номер страницы в отчет.
Нажимаем кнопку Finish. Форма будет выглядеть:
В отчет будет выводиться номер страницы