Ahoj,
odpovídám na zprávu ze středy, 20. prosince 2006,
kterou Petr Michálek napsal(a) v 22:45:11:
A nešlo by každý report vyplnit samostatně a pak všechny tří slepit
dohromady, tedy vygenerovat jedno PDF?
--------------------------- Původní zpráva ---------------------------
Odesilatel: Petr Michálek <[EMAIL PROTECTED]>
Předmět: JasperReports a 3 tabulky
Datum: 20. prosince 2006, 22:45:11 (GMT +0100)
Přílohy: <none>
msgid:[EMAIL PROTECTED]
P> [EMAIL PROTECTED] napsal(a):
>> > Hi Marian,
>> >
>> > já v těhle případech používám subreporty a "masterreport" definuju
>> > zhruba takto:
>> >
>> > <field name="tablemodel" class="javax.swing.table.TableModel"></field>
>> > <field name="subreport"
>> > class="net.sf.jasperreports.engine.JasperReport"></field>
>> >
>> >
>> > <detail>
>> > <band height="10" isSplitAllowed="true">
>> > <subreport isUsingCache="false">
>> > <reportElement positionType="FixRelativeToTop" mode="Transparent"
>> > x="0" y="0" width="505" height="9"/>
>> > <dataSourceExpression><![CDATA[new
>> > net.sf.jasperreports.engine.data.
>> > JRTableModelDataSource($F{tablemodel})]]></dataSourceExpression>
>> > <subreportExpression
>> > class="net.sf.jasperreports.engine.JasperReport"><!
>> > [CDATA[$F{subreport}]]></subreportExpression>
>> > </subreport>
>> > </band>
>> > </detail>
>> >
>> > Tato varianta predpoklada "tablemodel" jako datasource pro "subreport".
>> >
>> > Petr Michálek
>> Az teraz som sa k tomu dostal :(
>> Takze ak potrebujem vytvorit 3 rozdielne tabulky, tak to spravim
>> priblizne takto?:
>> <field name="dsA" class="sk.gamo.mojprojekt.tabA"></field>
>> <field name="srA" class="net.sf.jasperreports.engine.JasperReport"></field>
>> <field name="dsB" class="sk.gamo.mojprojekt.tabB"></field>
>> <field name="srB" class="net.sf.jasperreports.engine.JasperReport"></field>
>> <field name="dsC" class="sk.gamo.mojprojekt.tabC"></field>
>> <field name="srC" class="net.sf.jasperreports.engine.JasperReport"></field>
>> <detail>
>> <band>
>> <subreport isUsingCache="false">
>> <dataSourceExpression><![CDATA[new
>> net.sf.jasperreports.engine.data.JRTableModelDataSource($F{dsA})]]></dataSourceExpression>
>>
>> <subreportExpression
>> class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$F{srA}]]></subreportExpression>
>>
>> </subreport>
>> </band>
>> <band>
>> <subreport isUsingCache="false">
>> <dataSourceExpression><![CDATA[new
>> net.sf.jasperreports.engine.data.JRTableModelDataSource($F{dsB})]]></dataSourceExpression>
>>
>> <subreportExpression
>> class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$F{srB}]]></subreportExpression>
>>
>> </subreport>
>> </band>
>> <band>
>> <subreport isUsingCache="false">
>> <dataSourceExpression><![CDATA[new
>> net.sf.jasperreports.engine.data.JRTableModelDataSource($F{dsC})]]></dataSourceExpression>
>>
>> <subreportExpression
>> class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$F{srC}]]></subreportExpression>
>>
>> </subreport>
>> </band>
>> </detail>
>> Ako to potom pouzijem v Jave?
>> Ako priradim srA az srC ake jrxml sa ich tykaju?
P> Pokud by výše uvedený report byl validní, předal bych potrebne udaje
P> jako parametr reportu HashMap<String, Object>.
P> Chyba Tebou navrhovaneho prikladu spociva v tom, že <detail> se volá při
P> každé iteraci DataSource a může mít pouze jeden <band>
>> Marian Stevlik (Michal)
>> IS programmer / developer
>> GAMO a.s.
>> Kyjevske nam. 6
>> 974 04 Banska Bystrica
>> web: www.gamo.sk
>> mail: [EMAIL PROTECTED]
>> gsm: +421 905 462010
>> icq: 38493645
>> skype: majklbb
P> NE! Myslim, ze vyse uvedeny priklad neni validni.
P> - Navrhoval jsem iteraci pres tablemodel (např. "MASTER". Table model je
P> datasourde reportu).
P> - Kazdy row tablemodelu obsahuje subreport
P> (class="net.sf.jasperreports.engine.JasperReport") a tablemodel
P> (class="javax.swing.table.TableModel")
P> Jasperreport vygeneruje 1..n radku (detail) a v kazdem radku zobrazi
P> subreport a data, ktere jsou predany v radku "tablemodel"u.
P> Java kod bude vypadat zhruba takto:
P> JasperReport subreport_detail = ...;
P> JasperReport subreport_summary = ...;
P> Vector<String> tableColumns = new Vector<String>();
P> tableColumns.add("tablemodel");
P> tableColumns.add("subreport");
P> Vector<Vector<Object>> summaryData = new Vector<Vector<Object>>();
P> DefaultTableModel tableModel = new DefaultTableModel(tableColumns, 0);
P> Vector<Object> row;
P> row = new Vector<Object>();
P> row.add(createTableModel_Details(...));
P> row.add(subreport_detail);
P> tableModel.addRow(row);
P> row = new Vector<Object>();
P> row.add(createTableModel_Summary(...));
P> row.add(subreport_summary);
P> tableModel.addRow(row);
P> JRTableModelDataSource dataSource = new
P> JRTableModelDataSource(tableModel);
P> JasperPrint p = JasperFillManager.fillReport(is, params, dataSource);
P> Petr Michálek
------------------------ Konec původní zprávy ------------------------
--
---------------------------------------------------------------------
Tomáš Procházka
E-mail: [EMAIL PROTECTED]
WWW: http://atom.sf.cz
ICQ: 87147320
---------------------------------------------------------------------