jasper-reports
Utilizzo dei sottoreport
Ricerca…
Parametri
| Parametro | Dettagli |
|---|---|
| parametersMapExpression | La mappa con parametri. Non richiesto |
| subreportParameter | La coppia di nome e valore (impostata con subreportParameterExpression ). Non richiesto Diversi parametri possono essere passati al sottoreport |
| connectionExpression | Connessione per ottenere dati. Non richiesto |
| dataSourceExpression | Espressione per il passaggio di Datasource. Non richiesto |
| subreportExpression | Percorso / URI del sottoreport o anche oggetto JasperReport. Non richiesto |
| valore di ritorno | La coppia di nome e valore. Non richiesto Diversi valori possono essere restituiti dal sottoreport al report master indietro |
Osservazioni
I sottoreport possono essere utilizzati per la creazione di report complessi. Il riutilizzo dei report esistenti è un altro obiettivo dell'utilizzo dei sottoreport.
Il sottoreport verrà visualizzato come parte del report principale in caso di utilizzo dell'elemento
<subreport>.Il valore del parametro subreportExpression è diverso per l'utilizzo su JasperReports Server o semplicemente sul framework JasperReports (alcune API che utilizzano o utilizzano in IDE).
Per JasperReports Server sembra che:
<subreportExpression><![CDATA["repo:subreport.jrxml"]]></subreportExpression>Per l'utilizzo con il solo motore JasperReports :
<subreportExpression><![CDATA["/somePath/subreport.jasper"]]></subreportExpression>La grande spiegazione di @AndreasDietrich può essere trovata su JasperServer: impossibile individuare il messaggio dell'eccezione del sottoreport
Per alcuni motivi, il sottoreport può essere utilizzato come report comune, senza chiamare dal report principale (con l'aiuto dell'elemento
<subreport>). Il sottoreport è sempre un report.
Passare la connessione al sottoreport; restituire i valori al report principale
Questo è uno snippet di report principale. Due parametri e la connessione (ad esempio, jdbc ) passano al sottoreport. Un valore viene restituito dal sottoreport al report principale, questo valore ( variabile ) può essere utilizzato nel report principale
<subreport>
<reportElement x="0" y="80" width="200" height="100"/>
<subreportParameter name="someSubreportParameter">
<subreportParameterExpression><![CDATA[$P{someMasterReportParamter}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="anotherSubreportParameter">
<subreportParameterExpression><![CDATA["Some text - constant value"]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue subreportVariable="someVariableInSubreport" toVariable="someVariableInMasterReport"/>
<subreportExpression><![CDATA["$P{SUBREPORT_DIR} + "subreport.jasper"]]></subreportExpression>
</subreport>
Passare datasoure a sottoreport
Questo è uno snippet di report principale. L'origine dati viene passata al sottoreport con l'aiuto di net.sf.jasperreports.engine.data.JRBeanCollectionDataSource constructor
<field name="someFieldWithList" class="java.util.List"/>
<!-- ...... -->
<subreport>
<reportElement x="0" y="0" width="200" height="70"/>
<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
<dataSourceExpression><![CDATA[net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{someFieldWithList})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreport.jasper"]]></subreportExpression>
</subreport>