ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 报告中的两个DataSource

2019-10-03 04:03:15  阅读:175  来源: 互联网

标签:java jasper-reports


我必须在jasperReports中做一个报告
我用这样的DataSource填充我的初始报告

File mainJasper = new File( servletContext.getRealPath("/WEB-INF/prueba.jasper") );                             

            Map<String,Object> parametros = new HashMap<String, Object>();
            parametros.put("numLista", numLista );
            parametros.put("txtDestino", pas.getLista().getCiudadDestino());
            parametros.put("txtFecLlegada", pas.getLista().getFecLleLista().toString());
            parametros.put("txtProcedencia", pas.getLista().getCiudadProcedencia() );
            parametros.put("txtNombres", con.getPersona().getNomPersona() );
            parametros.put("txtFecNac", con.getPersona().getFecNacPersona().toString() );
            parametros.put("txtTipoDoc", con.getPersona().getParametrica().getNomParametrica());
            parametros.put("txtNroBrevete", con.getNumBrevConductor() );
            parametros.put("txtOcupacion", con.getPersona().getProPersona() );
            parametros.put("txtApellidos", con.getPersona().getApePatPersona() + " " +con.getPersona().getApeMatPersona()  );
            parametros.put("txtDomicilio", con.getPersona().getDirPersona() );
            parametros.put("txtNumDoc", con.getPersona().getNumDoc() );
            parametros.put("txtNacionalidad", con.getPersona().getPais().getNomPais() );
            parametros.put("txtEstCivil", con.getPersona().getEstCivPersona() );                            


            JasperReport mainReporte = (JasperReport) JRLoader.loadObject(mainJasper);
            JasperPrint mainPrint = JasperFillManager.fillReport(mainReporte, parametros, new JRBeanCollectionDataSource(List1));                              

            JRExporter exporter = new JRPdfExporter();              
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, mainPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE, new java.io.File("new.pdf")); 
            exporter.exportReport(); 

该代码工作正常,但我有另一个列表,我想在我的报告中有两个细节

我的名单是
List1实际上有效
List2是我的另一个列表
我怎么能通过这个其他名单?我的.jxrml中也有一个子报表,但是这两个列表是不同的对象

解决方法:

您可以将第二个作为参数发送.

parametros.put(“dataSource2”, List2 );

在报告中将参数类型设置为

net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

您可以使用$P {dataSource2}作为子报表的数据源,在表中的List中.

不确定我是否理解正确或者它是另一回事,但如果您希望这是子报表的数据源,请转到主报表上的子报表元素,添加以下行来设置它:

<subreport>
...
<dataSourceExpression><![CDATA[$P{dataSource2}]]></dataSourceExpression>
...
</subreport>

如果这不是您想要的,并且您需要更多具体细节,请告诉我们您将使用第二个数据源的具体内容.

一个例子 – 填充表格

1.declare一个子数据库(假设’code’和’caption’是List2中对象的字段)

 <subDataset name="Table Dataset 1">
            <queryString language="SQL">
                <![CDATA[]]>
            </queryString>
            <field name="code" class="java.lang.String"/>
            <field name="caption" class="java.lang.String"/>
        </subDataset>

2.实际表 – 将subDataset设置为您声明的名称(“表数据集1”)和REPORT_DATA_SOURCE参数作为包含List2(“dataSource2”)的参数

<jr:table ...>
    <datasetRun subDataset="Table Dataset 1">
        <datasetParameter name="REPORT_DATA_SOURCE">
             <datasetParameterExpression><![CDATA[$P{dataSource2}]]></datasetParameterExpression>
        </datasetParameter>
    </datasetRun>
.....
</jr:table>  

标签:java,jasper-reports
来源: https://codeday.me/bug/20191003/1846781.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有