2015-10-14 86 views
3

在我的情況下,我需要在jasper報告中同時使用JRBeanCollectionDataSource和嵌入式查詢。Can Jasper可以使用連接和bean綁定嗎?

如果我需要連接我喂如下面的報告,

JasperPrint jprint = (JasperPrint) JasperFillManager.fillReport(is, hm, ds.getConnection()); 

,如果我有一個集合在報告中顯示,如下喂,

JasperPrint jprint = (JasperPrint) JasperFillManager.fillReport(is, hm, getBeanDataSource()); 

getBeanDataSource方法返回一個JRBeanColleactionDataSource對象包含所需的數據。

兩者都正常工作。但在某些情況下,我需要用bean和另一個查詢來提供報表的一部分。有沒有辦法做到這一點 ?

回答

1

是和否,主報告需要一個數據源,但是您可以在報告中使用子報告,並且如果您想發送數據源,則可以通過參數進行操作。

HashMap<String,Object> hm= new HashMap<String,Object>(); 
hm.put("datasource", getBeanDataSource()); 

在JRXML

<parameter name="datasource" 
class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/> 

使用此數據源會是這樣的

<subreport> 
    <reportElement positionType="Float" x="-20" y="28" width="595" height="102" isRemoveLineWhenBlank="true" uuid="84c78233-8870-4563-9138-e166bb6000fd"/> 
    <dataSourceExpression><![CDATA[$P{datasource}]]></dataSourceExpression> 
    <subreportExpression><![CDATA[$P{your sub report jrxml}]]></subreportExpression> 
</subreport> 
子報表
相關問題