Ako vytvoriť zostavu

Z SPIN2-wiki
Prejsť na: navigácia, hľadanie

Vytvorenie prostredia pre tvorbu zostavy

Inštalácia programu JasperSoftStudio (pre verzie JS6 a vyššie)

Aktuálne používaná verzia programu JaspersoftStudio 6.5.1 sa nachádza na stránke http://community.jaspersoft.com/project/jaspersoft-studio ,
pri inštalácii sa defaultne uloží do podadresára c:\Program Files\TIBCO\Jaspersoft Studio-6.5.1.final\.
Pri prvom spustení JaspersoftStudia je potrebné nastaviť pripojenie na Oracle DB cez driver Oracle (oracle.jdbc.driver.OracleDriver).
Príslušný oracle driver (napr. ojdbc8.jar) sa dá stiahnuť z TechNet.oracle.com a uložiť napr. do c:\Program Files\TIBCO\Jaspersoft Studio-6.5.1.final\plugins\.
Driver sa načíta vo voľbe Data Adapters, Database JDBC Connection.
V karte Driver Classpath pridáte napr. c:\Program Files\TIBCO\Jaspersoft Studio-6.5.1.final\plugins\ojdbc8.jar

Inštalácia programu iReport (nevhodné pre verzie JS6 a vyššie)

Verzia programu 4.1.3 sa nachádza na stránke http://sourceforge.net/projects/ireport/files/iReport/iReport-4.1.3/ ,
pri inštalácii sa defaultne uloží do podadresára c:\Program Files\JasperSoft\iReport-4.1.3\
Do podadresára c:\Program Files\Jaspersoft\iReport-4.1.3\ide10\modules\ treba uložiť ojdbc6.jar, prípadne ojdbc7.jar.
Pri prvom spustení iReportu je potrebné nastaviť pripojenie na Oracle DB cez driver Oracle (oracle.jdbc.driver.OracleDriver) a
vo voľbe Options|Classpath treba cez Add JAR pridať driver napr. ojdbc7.jar

SPIN2 a JasperServer

Pre účely vytvárania a testovania zostáv existuje JasperServer na testovacej databáze Test19c.
V Spin2, vo voľbe Program, Nastavenia, Spoločné nastavenia, Zostavy je zapísaná URL adresa Jasper Reports servera,
pre testovaciu databázu má tvar http://dharma.asol.local:8083/jasperserver.
Prihlasovacie meno používateľa a heslo pre pripojenie na Jasper Reports server je "jasperadmin"

Návrh zostavy v programe iReport

Vytvorenie a popis sekcií

Nový report vytvoríte potvrdením File>New

IReport novy report.jpg

Vyberiete blank report a potvrdíte Open this Template. Zvolíte meno a umiestnenie nového súboru, potvrdíte Next a potom Finish.
Vytvorený report je zobrazený v časti Designer, obsahuje sekcie:
Title – nadpis reportu, zobrazuje sa len na prvej stránke

Page Header – záhlavie stránky, zobrazuje sa na každej stránke

Column Header – hlavička sekcie Detail, zobrazuje sa pred sekciou detail na každej stránke, definuje záhlavie tabuľky, ak má report formu tabuľky

Detail – hlavný obsah stránky, definuje jeden riadok údajov, opakuje sa podľa počtu záznamov získaných zo zdroja údajov

Column Footer – patička sekcie Detail, zobrazuje sa po sekcii Detail na každej stránke, definuje patičku tabuľky, ak má report formu tabuľky

Page Footer – patička stránky, zobrazuje sa na každej stránky

Summary – sekcia pre záverečné súčty a zhrnutie celého reportu, Na zostave sa zobrazí pred Column Footer, tesne za sekciou Detail

Pre podrobnejšie členenie zostavy sa používa grupovanie alebo sa vkladajú subeporty.

Výber údajov do reportu

Potvrdíte database query

IReport otvorenie query.jpg

Otvorí sa Query dialog na tvorbu selektu, ktorý vyberie údaje do reportu.
SQL query je uložený v reporte a akceptuje parametre na filtrovanie údajov,
pre štandardné parametre používa syntax $P{}

Tip: Ako vytvoriť Selekt zostavy
Zvolíte si okno, nad ktorým chcete vytlačiť zostavu – tlačivo
V programe SPIN1 viete získať selekt zvoleného okna, zvyčajne obsahuje viac údajov ako potrebujete, tento selekt môžete upraviť
Prípadne nájdete podobnú zostavu, ako potrebujete a použijete tento selekt

Príklad selektu - údaje o firme

IReport query.jpg

Po potvrdení Read Fields sa v dolnej časti okna zobrazia všetky položky, ktoré môžu byť použité v reporte ako FIELD
Ak sa v SQL vyskytne chyba, vypíše sa chybová správa.
Ak je selekt správny, potvrdíte OK.
V hlavnom menu potvrdíte voľbu Windows,Report Inspector
Po rozkliknutí časti Fields sa zobrazia všetky položky, ktoré môžu byť použité v reporte
Nastavíte sa na objekt, vezmete a potiahnete do sekcie Design.
Keď je objekt presunutý do sekcie Detail, iReport vytvorí prvok Textfield
a položku Textfield expression pre tento prvok nastaví na $F{NAZOV_FIRMY}. Týmto jednoduchým spôsobom je možné vytlačiť hodnotu poľa NAZOV_FIRMY (syntax $F{NAZOV_FIRMY}).
Operáciu môžete zopakovať aj pre ostatné položky. Textfield formátujete zmenou veľkosti, presúvaním a zarovnávaním.
Je dôležité, aby prvky Textfield boli umiestnené v sekcii Detail.

IReport novy field.jpg

Prvky ako čiary, obrázky, labely ... vkladáte do príslušných sekcií metódou Look&Feel z panelu Palette

IReport panel Palette.jpg

Nastavenie vlastností prvkov

Vlastnosti nastavujete vo voľbe Windows, Properties. Po kliknutí na prvok v sekcii Designer alebo Report inspector sa zobrazia vlastnosti prvku.
Ak chcete vidieť vlastnosti sekcie, kliknite na nepoužitú časť sekcie.
Výšku sekcie zmeníte potiahnutím jej spodného okraja. Sekciu odstránite tak, že výšku nastavíte na hodnotu 0.Dvojklik na spodnom okraji sekcie nastaví spodný okraj sekcie na úroveň spodného okraja jej najnižšieho prvku.
Každý prvok má množstvo vlastností, ak nie sú nastavené, použije sa default hodnota.

Properties

IReport Properties.jpg

Vždy sa uvádzajú súradnice prvku v rámci sekcie.
V prípade, že je prvok uložený tak, že pretína hranice sekcie, program pri vykonávaní vyhlási chybu.
K takýmto chybám dochádza najčastejšie pri kopírovaní prvkov v rámci sekcie, prípadne pri presúvaní medzi sekciami.
Chybné prvky s mínusovými súradnicami sa nezobrazujú, treba ich vyhľadať pomocou Report Inspector.

Print When Expression

Vráti hodnotu new Boolean(výraz), položka sa zobrazí, len ak je táto hodnota TRUE, inak ostane prázdne miesto.
Ak chcete zabrániť vytváraniu prázdnych miest, skrývanie položiek treba riešiť na úrovni grúp alebo subreportov


IReport Properties Text.jpg

Blank When Null

Vo väčšine prípadov je táto voľba začiarknutá, je dobré,ak sú null položky ošetrené už skôr.

Pattern, Pattern Expression

Grafické znázornenie položky
Napríklad (bez úvodzoviek)
"dd.mm.yyyy" pre rok
"#,##0.00" pre sumu

Fields & Variables

Text Field Expression Fields, $F{} sú položky vytvorené selektom
Variable, $V{} sú premenné. Existuje niekoľko zabudovaných premenných


IReport Text Field Expression.jpg

Premenná $V{PAGE_NUMBER} je vhodným príkladom použitia Evaluation Time .
Ak chcete na stránke zapísať aktuálna strana/celkový počet strán, v oboch prípadoch použijete premennú $V{PAGE_NUMBER}, pre aktuálnu stranu nastavíte Evaluation Time na hodnotu Now, pre celkový počet strán nastavíte Evaluation Time na hodnotu Report.

Ak existujú grupy, do položky Evaluation group sa zapíše názov grupy, pre ktorú sa výraz vyhodnocuje.
Môžete si vytvárať vlastné premenné, do ktorých budete ukladať napríklad medzisúčty za jednotlivé grupy.

Text properties

V časti Text properties sú informácie o vzhľade textu
Názov fontu je SansSerif pre Display a Helvetica pre tlač
Veľkosť je 8 pre ležaté zostavy, 9-10 pre portrait
Texty sa zarovnávajú doľava, čísla doprava
Riadkovanie je Single
Markup je none, v prípade, že v rámci textu budete používať riadiace znaky, nastavíte styled

Zdrojom údajov je .xml súbor

Príklad zdrojového .xml súboru
<?xml version="1.0" encoding="ISO-8859-1"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
...
<CD>
<TITLE>Unchain my heart</TITLE>
<ARTIST>Joe Cocker</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>EMI</COMPANY>
<PRICE>8.20</PRICE>
<YEAR>1987</YEAR>
</CD>
</CATALOG>

Vo Connections/Datasources pridáte nový záznam
Datasource je XML file datasource
Zadáte Name , napríklad Zdroj XML
názov XML File , napríklad E:\.ajasp\cd_catalog.xml
Potvrdíte Create a datasource using this expression
a do Select expression zadáte napríklad /CATALOG/CD
V Report Query vyberiete Query language XPath
Zapíšete report query, napríklad /CATALOG/CD
V pravej časti sa vybrané položky zvýraznia, môžete vyberať z položiek, ktoré sú pod nimi
Na zvolenej položke potvrdíte pravú myš a Add node as field
Údaje sa zapíšu do stĺpca Field name, Field type, Description
Po potvrdení Preview Data sa údaje zobrazia v dolnej časti obrazovky

S fieldami pracujete ako v prípade fieldov zo zdroja SQL

Report Inspector

Obsahuje popis zostavy

IReport report inspector.jpg

Spustenie zostavy v lokálnom režime

Jednoduchý report si môžete prezrieť po potvrdení voľby Preview v paneli nástrojov Designera. Preview na pozadí skompiluje report a naplní ho údajmi získanými dotazom z JDBC spojenia. Sekcia detail sa opakuje pre každý riadok získaný ako výsledok dotazu a vytvára jednoduchý tabuľkový report.

iReport vykoná operácie a vytvorí výstupný report. Ako prvé skompiluje JRXML zdrojový kód do Jasper súboru. Tento krok sa nemusí podariť, ak sú prvky nesprávne umiestnené, napríklad, ak prvok je mimo sekcie, alebo výraz v reporte je nesprávny a nedá sa skompilovať.
Ak kompilácia prebehla úspešne, vytvorený Jasper súbor je natiahnutý a naplnený údajmi z pripojenia alebo zo zdroja údajov. Táto druhá operácia môže skončiť s chybou, napríklad ak databáza, na ktorú sa hlásite nie je aktívna, dotaz bol nesprávny, alebo null field spôsobil chybu vo výraze počas napĺňania. Ak sa všetky operácie vykonali správne, report sa zobrazí v zabudovanom prehliadači.
Reporty môžu byť exportované v rôznych formátoch po potvrdení Save v nástrojovej lište alebo nastavením príslušného formátu vo voľbe Preview

Po nastavení formátu pre prezeranie, report je po potvrdení Preview automaticky exportovaný do tohto formátu a je otvorený príslušný prehliadač, napr. PDF viewer alebo OpenOffice.

Vo voľbe Tools > Options > iReport > Viewers sa nastavuje prehliadač automaticky.

Keď výsledný report neobsahuje žiadne strany, iReport namiesto dokumentu zobrazí informáciu . Nie je to chyba, iReport oznamuje, že report je prázdny. Toto sa môže stať z rôznych príčin, zvyčajne, keď SQL dotaz alebo zdroj údajov nedodali žiadne údaje. Ak sa zobrazí takáto informácia, treba skontrolovať databázové pripojenie a otestovať query vo vašom reporte.

Upozornenie:
Pre zostavy, ktoré obsahujú obrázky alebo subreporty umiestnené na serveri, voľbu Preview nespúšťajte.
Ak selekt obsahuje parameter $P{} , Preview skončí s chybou. V takomto prípade môžete parameter nahradiť konkrétnou hodnotou.
Je lepšie, ak zostavy uložíte na server a spúšťate priamo zo servera.

Uloženie zostavy na server

Štruktúra adresára na JS

Po potvrdení voľby menu Windows->JasperReports Server Repository sa zobrazí štruktúra adresára
V prípade referenčnej databázy je to Hudson, v prípade testovacej databázy je to TestGr

IReport struktura podadresara(Hudson).jpg

Povinné podadresáre v hlavnom podadresári sú FIRMA a ZAKLAD,
do podadresára ZAKLAD sa ukladajú štandardné zostavy,
do podadresára FIRMA sa ukladajú úžívateľské zostavy, v hlavnom podadresári sú uložené položky, ktoré môžu byť, budú použité vo všetkých zostavách :

Input Control povinné vo všetkých zostavách sú

ID agendy – agendaId
ID mandanta – mandantId
ID uzívatela – userId


ApplicationResources
SPIN – data source - zdroj údajov
Typy údajov, použijú sa pri nahrávaní parametrov

V adresári ZAKLAD sú vytvorené podadresáre pre jednotlivé agendy.
EMO pre Majetok
PAZ pre Pohľadávky a záväzky
SOF pre Logistiku
UCT pre Účtovníctvo

Podadresár každej agendy sa ďalej člení podľa oblastí.
V rámci každej agendy je podadresár parametrov

Pre Majetok je to EmoParam, obsahuje parametre používané v agende Majetok

Pridanie novej zostavy

V podadresári ZAKLAD/AGE sa po potvrdení pravej myši zobrazí menu, po potvrdení ADD JasperServer Report sa otvorí ReportUnit Wizard.
Zadáte ID, nazov a popis zostavy.

Pozor Dôležité! ID zostavy musí začinať „j_“

V časti Main JRXML vyberiete existujúci lokálne definovaný .jrxml súbor. V časti Locate Data Source potvrdíte „From the repository“ „/SPIN“

Novej zostave je potrebné doplniť Input controls - trojica parametrov agendaId, mandantId, userId je povinná a nachádza sa v hlavnom podadresári, ostatné parametre sa vyberajú z podadresára parametrov príslušnej agendy

Pozor Dôležité! ID názvy parametrov sú case sensitive

V čast Resources - sa doplní odkaz na ApplikationResources_sk.properties,prípadne ApplikationResources_en.properties ktoré sa nachádzajú v spoločnom podadresári ZAKLAD/RESOURCES/Properties

Volanie zo SPIN2

Volanie.

Napríklad v Majetku

V module Majetok , vo voľbe Dlhodobý majetok, v okne Stav, načítate všetko
Vo voľbe Okná, Definícia zostáv vyberiete Stav majetku a potvrdíte Pridať
Zobrazí sa formulár pre definovanie zostáv
Vyberiete zostavu a vrátite sa do okna
Potvrdíte ikonku

Vo voľbe Program, Nastavenia, v časti Spoločné nastavenia, Zostavy je položka Obnovovať výber posledne použitej

Ak je začiarknutá, hneď po potvrdení ikonky sa vytlačí posledne použitá zostava. Defaultne sú výstupné zostavy vo formáte PDF

Okruhy problémov pri tvorbe zostavy

Fonty

V zostave sa nevypisujú texty
– nenašiel sa font
- nie je spravne uvedena referencia na .properties

Chybná diakritika
– v položkách treba nastaviť správnu kódovú stránku - pre Slovensko je to CP1250
- kombinacia fontu Helvetica a Identity -H je problematicka

Parametre

Všetky zostavy očakávajú parametre – ID mandanta, ID uzivatela, ID agendy typu Integer, v názve parametrov sa rozlišujú veľké a malé písmená

Pre testovacie účely treba zistiť reálne hodnoty parametrov

V prípade nesprávne zvoleného parametra zostava dáva prázdny výstup

Volanie subreportov

Na JS funguje, v aplikácii nie

Zostava beží v locale, na JS nie – JS je pripojený na inom mieste
Zostava sa z programu nezavolá - nie je pripojený JS

Prenos na inú databázu

Internacionalizácia

Súbory pre viacjazyčnosť sú v podadresári ZAKLAD\RESOURCES\Properties\
ApplicationResources_cs.properties
ApplicationResources_sk.properties
_sk, _cs indikujú jazyk, prípona .properties je systémová
Štruktúra súboru je Key, Value
K rovnakej hodnote kľúča je priradená hodnota v príslušnom jazyku <> Nastavenie jazyka sa rieši na úrovni programu a systému

Zadefinovanie viacjazyčnosti v zostavách

Otvoríte zostavu, zadáte
Window, ReportInspector, 1.ikonka, pravá myš, Properties
Do položky Resource bundle zadáte : ApplicationResources
Ked už ste tu, v položke Language skontrolujete, má tam byť : Groovy

Ak subreporty takejto zostavy obsahujú textové položky,
vstupuje do nich parameter $P{REPORT_RESOURCE_BUNDLE}

Použitie Resource bundle

Položky, ktoré sa majú dať preložiť do iného jazyka sa do zostavy zapíšu v tvare
$R{kod zo suboru ApplicationResources}

Vytvorenie zákazníckej zostavy drobnou úpravou štandardnej

iReport, RepositoryNavigator, TestGr

Otvorím si pôvodnú zostavu Pridám novú zostavu - na pozícii pravá myš, Add JasperServer Report
Zadám ID - musí začínať "j_" , Name , Description
Locate the main JRXML file - Get source from current opened report
Locate the Data Source from the repository - /SPIN

V strome pribudne nová zostava

Treba doplniť Input controls - pravá myš
pre existujúce - link an existing input control
pre všetky zostavy z hlavneho podadresara povinne : agendaId, mandantId,userId
ostatné parametre z príslušných podadresárov, napr anEpid
pre nové - create a local input control v podadresári parametrov a potom výber

Treba doplniť Resources - pravá myš - ADD - Reference,
ApplicationResources_cs.properties
ApplicationResources_sk.properties

Export/Import zostáv pre účely archivácie a prenosu na iný server-Buildomatic