2015-10-14 85 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> 
子报表
相关问题