Ako vytvoriť zostavu
Obsah
- 1 Vytvorenie prostredia pre tvorbu zostavy
- 2 Návrh zostavy v programe iReport
- 3 Spustenie zostavy v lokálnom režime
- 4 Uloženie zostavy na server
- 5 Volanie zo SPIN2
- 6 Okruhy problémov pri tvorbe zostavy
- 7 Internacionalizácia
- 8 Vytvorenie zákazníckej zostavy drobnou úpravou štandardnej
- 9 Export/Import zostáv pre účely archivácie a prenosu na iný server-Buildomatic
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
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
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
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.
Prvky ako čiary, obrázky, labely ... vkladáte do príslušných sekcií metódou Look&Feel z panelu Palette
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
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
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
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
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
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.
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
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