2014-02-26 64 views
0

我不得不在JasperReports的報告
我充滿了這樣的兩個數據源在報告

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(); 

代碼工作正常,一個DataSource我的初步報告,但我還有一個名單,我想有我在報告中兩個細節

我的列表是
列表1至極實際工作
列表2是我的其他列表
如何傳遞這個其他列表?另外我在我的.jxrml中有一個子報表,但這兩個列表是不同的對象。

+0

可能重複http://stackoverflow.co參數米/問題/ 15534664 /如何對動態附加多片-的數據合碧玉的報告 – sanBez

回答

1

您可以將第二個作爲參數發送。

parametros.put(「dataSource2」,List2);

在報告中設定的參數類型

net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

您可以使用$ P {} dataSource2作爲數據源到子表,列表中的子報表。

不知道如果我理解正確,或者它是一個不同的問題,但如果你想這是你的報表的數據源到子報表元素在主報告中添加以下行來進行設置:

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

如果這不是你想要的,並且你需要更具體的細節,讓我們知道你將使用第二個數據源。

一個例子 - 填充表

1.declare一個subdatase(假設「代碼」和「說明」是你的對象的字段列表2)

<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,實際的表 - 設置子數據有你聲明(「表格數據集1」)之一,REPORT_DATA_SOURCE參數的名稱是包含您的列表2(「dataSource2」)

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