notatki java 07

background image

Generowanie raportów

1

1. Wprowadzenie

przykładowy problem,

podstawowe własności narzędzi raportujących.

2. JasperReports

struktura raportu,

parametry, zmienne i pola,

generowanie raportu (API).

3. iReport

background image

Wprowadzenie

2

Informacje zgromadzone w bazie danych są przede wszystkim wykorzystywane do

tworzenia analiz i raportów. Bezpośrednia analiza wyników zapytania SQL może

być trudna, szczególnie dla osób nie związanych zawodowo z obsługą baz danych.

Aby przedstawić wyniki w formie akceptowalnej dla tych osób używa się narzędzi

służących do generowania raportów.

Narzędzia przeznaczone do tworzenia raportów:

http://207.178.67.98/java/readerschoice2004/frameliveupdate.cfm?BType=19

background image

Wprowadzenie

3

zamowienia

zamowienia

id_zamowienia

data_zakupu

...

id_kontrahenta

towary

id_towaru

ilosc

cena

id_zamowienia

kontrahenci

kontrahenci

id_kontrahenta

nazwa

adres

...

background image

Wprowadzenie

4

Przykładowe raporty:

1. Wartość sprzedaży w zadanym okresie:

SELECT SUM(t.ilosc*t.cena) FROM towary t

JOIN zamowienia z ON t.id_zamowienia=z.id_zamowienia

WHERE z.data<'...' AND z.data<'...'

2. Bestsellery:

SELECT t.id_towaru, SUM(t.ilosc) FROM towary t

JOIN zamowienia z ON t.id_zamowienia=z.id_zamowienia

WHERE z.data<'...' AND z.data<'...'

GROUP BY t.id_towaru LIMIT ...

background image

Wprowadzenie

5

3. Najlepsi klienci:

SELECT k.nazwa, SUM(t.ilosc*t.wartosc) FROM zamowienia z

JOIN towary t ON t.id_zamowienia=z.id_zamowienia

JOIN kontrahenci k ON k.kontrahent_id=z.kontrahent_id

WHERE z.data<'...' AND z.data<'...'

GROUP BY k.kontrahent_id LIMIT ...

background image

Wprowadzenie

6

Narzędzie do generowania raportów powinno umożliwiać:

stworzenie raportu na bazie zapytania SQL,

eksport raportu do popularnych formatów danych (pdf, html, excel, csv, ...),

obsługę zewnętrznych parametrów sterujących raprtem.

Istnieje wiele narzędzi służących do przygotowania raportów. Wśród darmowych na

wyróżnienie zasługuje JasperReports http://jasperreports.sourceforge.net/.

background image

Wprowadzenie

7

background image

JasperReports

8

Podstawowe cechy JasperReports:

1. Samodzielna biblioteka w Javie, do wykorzystania we własnych programach.

2. Możliwość tworzenia podraportów.

3. Eksport raportów do formatów: PDF, XML, HTML, CSV, XLS, RTF, TXT.

4. Wykresy.

5. Obsługa lokalizacji.

7. Skalowalność – brak wewnętrznych ograniczeń na rozmiar raportu.

8. Rozszerzalność.

9. Dostępność narzędzi wspomagających.

10. Współpraca z wieloma mechanizmami dostępu do danych: JDBC, EJB, POJO,

Hibernate, XML.

background image

JasperReports

9

Struktura dokumentu XML:

<?xml version="1.0"?>

<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="bestsellery" ... >

...

</jasperReport>

background image

Parametry

10

Parametry przekazywane z zewnątrz:

<parameter name="Pdate_from" isForPrompting="false"

class="java.lang.String">

<defaultValueExpression>

<![CDATA[""]]>

</defaultValueExpression>

</parameter>

...

<parameter name="Plimit" isForPrompting="false">

<defaultValueExpression>

<![CDATA["10"]]>

</defaultValueExpression>

</parameter>

Dostęp do parametru uzyskuje się stosując konstrukcję:

$P{nazwa}

.

background image

Wbudowane parametry

11

Wbudowane parametry (wybrane):

REPORT_PARAMETERS_MAP

– mapa wszystkich parametrów (

java.util.Map

).

REPORT_CONNECTION

połączenie z bazą danych (

java.sql.Connection

).

REPORT_DATA_SOURCE

– źródło danych (

JRDataSource

).

REPORT_LOCALE

– lokalizacja (

java.util.Locale

).

REPORT_RESOURCE_BUNDLE

– zlokalizowane komunikaty

(

java.util.ResourceBundle

).

REPORT_CLASS_LOADER

- obiekt używany podczas wypełniania raportu do

ładowania zasobów takich jak obrazki, fonty, podraporty
(

java.lang.ClassLoader

).

IS_IGNORE_PAGINATION

– jeśli ustawiony na

java.lang.Boolean.TRUE

raport

nie będzie dzielony na strony.

background image

Pola

12

Pola - atrybutów otrzymane w wyniku zapytania:

<field name="id_towaru" class="java.lang.Integer"/>

<field name="suma" class="java.lang.Double"/>

Dostęp do pola uzyskuje się stosując konstrukcję:

$F{nazwa}

.

background image

Zmienne

13

Dodatkowe wewnęytrzne zmienne raportu:

<variable name="Vlp" class="java.lang.Integer"

resetType="Report" calculation="Nothing">

<variableExpression>

<![CDATA[

new java.lang.Integer($V{Vlp}.intValue() +1)

]]>

</variableExpression>

<initialValueExpression>

<![CDATA[

new java.lang.Integer(0)

]]>

</initialValueExpression>

</variable>

Dostęp do zmiennej uzyskuje się stosując konstrukcję:

$V{nazwa}

.

background image

Zapytanie SQL

14

Zapytanie SQL przekazuje się następująco:

<queryString>

<![CDATA[SELECT t.id_towaru, SUM(t.ilosc) AS suma

FROM towary t
JOIN zamowienia z ON t.id_zamowienia=z.id_zamowienia
WHERE z.data<'$P!{Pdate_from}'
AND z.data<'$P!{Pdate_to}'
GROUP BY t.id_towaru LIMIT $P!{Plimit}]]>

</queryString>

Jeśli parametr ma zostać użyty w zapytaniu SQL powinien być przekazany przez

$P

!

{parametr}

.

background image

Sekcje raportu

15

Raport składa się z następujących sekcji:

background

– tło raportu,

title

– nagłówek raportu,

pageHeader

– nagłówek strony raportu,

columnHeader

– nagłówek tabeli (nazwy atrybutów),

groupHeader

– nagłówek grupy danych,

detail

– zawartość raportu – sekcja jest powtarzana dla każdego rekordu danych,

GroupFooter

– stopka grupy,

ColumnFoter

– stopka tabeli,

PageFooter

– stopka strony,

LastPageFooter

– stopka ostatniej strony,

Summary

- podsumowanie.

background image

Sekcje raportu

16

Przykładowa sekcja:

<pageHeader>

<band height="30">

<rectangle>

<reportElement x="0" y="0" width="555"

height="25"/>

<graphicElement/>

</rectangle>

<staticText>

<reportElement x="0" y="0" width="555"

height="25"/>

<textElement textAlignment="Center">

<font fontName="Helvetica" size="18"/>

</textElement>
<text>Bastsellery</text>

</staticText>

</band>

</pageHeader>

background image

Sekcje raportu

17

Sekcja detail:

<detail>

<band height="20" isSplitAllowed="true" >

<textField isStretchWithOverflow="true">

<reportElement x="40" y="0" width="60"

height="15"/>

<box/>

<textElement/>

</textField>

<textFieldExpression class="java.lang.Integer">

<![CDATA[$V{Vlp})]]>

</textFieldExpression>

...

</detail>

background image

Korzystanie z raportu

18

Przygotowany dokument XML opisujący raport należy zapisać w pliku

(z rozszerzeniem jrxml).

Aby wygenerować raport należy go:

skompilować,

wypełnić,

wyświetlić na ekranie (lub wyeksportować do pliku).

background image

Kompilacja raportu

19

Do kompilacji raportu służą metody statyczne klasy:

net.sf.jasperreports.engine.JasperCompileManager

.

np.

JasperCompileManager compileReportToFile("besteller.jrxml",

"bestseller.jasper");

lub

JasperReport jr = compileReport("besteller.jrxml");

pełna nazwa klasy

JasperReport

to:

net.sf.jasperreports.engine.JasperReport

background image

Wypełnienie raportu

20

Jeśli skompilowany raport jest w pliku najpierw należy go załadować:

Klasa:

net.sf.jasperreports.engine.util.JRLoader

. Przykład:

JasperReport jr = (JasperReport)

JRLoader.loadObject("bestseller.jasper");

Wypełnienie raportu:

JasperPrint jp = JasperFillManager.fillReport(jr, map, con);

map

– mapa parametrów (

java.util.Map

),

con

– połączenie z bazą danych (

java.sql.Connection

).

background image

Wyświetlenie raportu

21

Wypełniony raport (

net.sf.jasperreports.engine.JasperPrint

) można

wyświetlić:

JasperViewer.viewReport(jp, false);

lub wyeksportować, np:

net.sf.jasperreports.engine.JasperExportManager.

exportReportToPdfFile(jp, "bestseller.pdf");

background image

Narzędzia współpracujące z JasperReports

22

Istnieje wiele narzędzi służących do graficznego projektowania raportów zgodnych z

JasperReports http://jasperreports.sourceforge.net/gui.tools.html. Najintensywniej

rozwijane to:

iReport (http://ireport.sourceforge.net) – graficzny interfejs do JasperReports

JasperAssistant (http://www.jasperassistant.com) – plugin do Eclipse (komercyjny)

background image

iReport

23

background image

Podsumowanie

24

JasperReports to intensywnie rozwijane narzędzie służące do tworzenia raportów.

Korzystanie z niego ułatwia wiele narzędzi wspomagających graficzne

projektowanie raportów.


Wyszukiwarka

Podobne podstrony:
notatki java 08
notatki java 05
JAVA 07 instrukcje warunkowe
notatki java 04
notatki java 09
garki notatki na 07.11, Płytka IPSIR 2009, Semestr I, Prawo karne, Prawo Karne CW Olga Sitarz
Antologia polskiej poezji rewolucyjnej 1918 – 1939 (notatki), Polonistyka, 07. Współczesna do 45, OP
notatki java 10
Java 07 Watki GUI
notatki java 08
notatki java 05

więcej podobnych podstron