2012-03-20 16 views

risposta

27

È possibile compilare il sottoreport come il report semplice, ad esempio con il metodo JasperCompileManager.compileReport(java.lang.String sourceFileName).

Successivamente è possibile passare il sottoreport compilato come parametro al report principale.

Il campione:

JasperReport jasperMasterReport = JasperCompileManager.compileReport(masterReportSource); 
JasperReport jasperSubReport = JasperCompileManager.compileReport(subReportSource); 

Map<String, Object> parameters = new HashMap()<String, Object>; 
parameters.put("subreportParameter", jasperSubReport); 

JasperFillManager.fillReportToFile(jasperMasterReport, parameters, connection); 

Il frammento dal file jrxml del rapporto padrone (campione):

<parameter name="subreportParameter" class="net.sf.jasperreports.engine.JasperReport"/> 
... 
<detail> 
    <band height="50"> 
     ... 
     <subreport> 
       <reportElement isPrintRepeatedValues="false" x="5" y="25" width="325" height="20" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/> 
       <subreportParameter name="City"> 
        <subreportParameterExpression><![CDATA[$F{City}]]></subreportParameterExpression> 
       </subreportParameter> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <returnValue subreportVariable="PriceSum" toVariable="ProductTotalPrice" calculation="Sum"/> 
       <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{subreportParameter}]]></subreportExpression> 
      </subreport> 
+3

@Alex_K uomo, io ti amo, dico sul serio, questo è grande! ;) –

+1

non funziona !! –

+0

Posso rendere dinamico il valore di x, y, width, height? – user1791574

Problemi correlati