Jasper reports 在jaspersoft中创建连续表

Jasper reports 在jaspersoft中创建连续表,jasper-reports,Jasper Reports,我正在使用JasperReports,无法找到创建连续表的方法。当第一个填好后,下一个将覆盖它,而不是移动 以前有人遇到过这个问题吗 更新 我使用的子报表有两个详细栏位,每个详细栏位中有一个表 到目前为止,我为父报表生成了页面,但子报表区域为空 这是我与报告交互的代码: try { HashMap param = new HashMap(); JRBeanCollectionDataSource tableA = new JRBeanCollectionDataSource(

我正在使用JasperReports,无法找到创建连续表的方法。当第一个填好后,下一个将覆盖它,而不是移动

以前有人遇到过这个问题吗

更新

我使用的子报表有两个详细栏位,每个详细栏位中有一个表

到目前为止,我为父报表生成了页面,但子报表区域为空

这是我与报告交互的代码:

try {

    HashMap param = new HashMap();

    JRBeanCollectionDataSource tableA = new JRBeanCollectionDataSource(tableAItems);
    param.put("AtableDatasource", tableA);
    JRBeanCollectionDataSource tableB = new JRBeanCollectionDataSource(tableBItems);
    param.put("BtableDatasource", tableB);
    param.put("tableHeadA","TABLE A HEADER");
    param.put("column1AHead","A COL 1");
    param.put("column2AHead","A COL 2");
    param.put("column3AHead","A COL 3");
    param.put("header","SAMPLE REPORT");
    param.put("theDetails", "THE DETAILS");
    param.put("detail1Label", "DETAIL BAND 1");
    param.put("detail2Label", "DETAIL BAND 2");

    InputStream parent = Main.class.getResourceAsStream("/sample_parent.jasper");
    JasperPrint jpParent = JasperFillManager.fillReport(parent, param, new JREmptyDataSource(1));

    JasperExportManager.exportReportToPdfFile(jpParent, "C:\\REPORTS\\sampleReport.pdf");


} catch (JRException e) {
    e.printStackTrace();
}
与往常一样,示例代码上传到下面链接的GitHub repo


GitHub repo:

您当前的问题是,包含
jr:table
的框架没有
positionType=“float”
,您已经将其设置为
jr:table
,但您需要将其设置为frame)

<>但是,为了更好地控制和实现你想要的布局(因为你有右边的表),考虑创建2个子报表。p> 作为数据源传递到子报表
新JREPTYDATASOURCE(1)
,以生成1个记录详细栏和您的参数映射,以在子报表中获取参数
$p{B3questionsDatasource}

  • 子报表,包含图像中的表A和表B,可以将它们放在彼此下方,也可以使用多个细节栏

    <detail>
      <band height="50">
          ... table 1 ....
      </band>
      <band height="50">
          ... table 2 ....
      </band>
    </detail>
    
    
    ... 表1。。。。
    ... 表2。。。。
    
  • 子报告,带有表C和新表D(如上例所示)

  • 主报告中包含相邻的子报告

    范例

    <subreport>
       <reportElement x="0" y="20" width="400" height="20" uuid="a7a89ebb-54d4-4b6e-8c9f-c107e8a40bbb"/>
        <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreport1.jasper"]]></subreportExpression>
    </subreport>
    

    您当前的问题是,包含
    jr:table
    的框架没有
    positionType=“float”
    ,您已将其设置为
    jr:table
    ,但需要将其设置为frame)

    <>但是,为了更好地控制和实现你想要的布局(因为你有右边的表),考虑创建2个子报表。p> 作为数据源传递到子报表
    新JREPTYDATASOURCE(1)
    ,以生成1个记录详细栏和您的参数映射,以在子报表中获取参数
    $p{B3questionsDatasource}

  • 子报表,包含图像中的表A和表B,可以将它们放在彼此下方,也可以使用多个细节栏

    <detail>
      <band height="50">
          ... table 1 ....
      </band>
      <band height="50">
          ... table 2 ....
      </band>
    </detail>
    
    
    ... 表1。。。。
    ... 表2。。。。
    
  • 子报告,带有表C和新表D(如上例所示)

  • 主报告中包含相邻的子报告

    范例

    <subreport>
       <reportElement x="0" y="20" width="400" height="20" uuid="a7a89ebb-54d4-4b6e-8c9f-c107e8a40bbb"/>
        <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreport1.jasper"]]></subreportExpression>
    </subreport>
    
    
    
    附件您可以找到pic,我将存储库与报告链接。您实际有一个表c(右侧),您确定表a在您指定的位置结束吗?您是否希望表B在表a和表c之后?…我希望表B位于a下方,另一个表将位于表c下方(考虑A右边的C)@PetterFriberg我完全确定。重点是,两个表都是动态填写的。因此,表A将在该点结束。在这种情况下,在另一个表中,可能更长或更短。我的想法是使表B自动重新定位到下面。这可能吗?要遵循什么步骤?尝试设置positionType=“Float”在包含附件表格的框架上,您可以找到pic,我将存储库与报告链接。您实际有一个表c(右侧),您确定表a在您指定的位置结束吗?您是否希望表B在表a和表c之后?…我想得到a下面的表B,另一个表将在表c下面(考虑A右边的C)@PetterFriberg我完全确定。重点是,两个表都是动态填写的。因此,表A将在该点结束。在这种情况下,在另一个表中,可能更长或更短。我的想法是使表B自动重新定位到下面。这可能吗?要遵循什么步骤?尝试设置positionType=“Float”在包含您的表格的框架上,我正在测试您的新方法,它看起来很有希望,但我面临一些问题。您可以在第一篇文章中找到详细信息。@MichaelKnight,首先,您没有必要编译报告,您有了设计,顺序是(如果需要,编译jrxml),获取设计,填充报告。所以只需将设计传递给fillmanager@MichaelKnight,您正在自行填充子报表,它不包含在主报表中(从该报表调用)…您可以执行此操作,然后在导出期间合并它们…您想继续,像这样…我可以更新答案(在当前答案中,它包含在主报告中,因此您只需调用1个报告)@Peter Friberg我修改了我的代码,以便对父报表进行一次调用,这很有意义。但是我仍然得到空的PDF输出。我不知道这是否与我在执行应用程序时在控制台上收到的消息有关:
    2016年2月3日12:29:23 PM net.sf.jasperreports.engine.query.jrjrjdbcqueryexecuter广告:The提供的java.sql.Connection对象为空。
    @MichaelKnight如果您在报告中没有查询,这不是问题……我找不到您在代码中提到的sample.jrxml。我正在测试您的新方法,它看起来很有希望,但我面临一些问题。您可以在第一篇文章中找到详细信息。@MichaelKnight,首先没有必要要编译设计报告,顺序是(如果需要,编译jrxml)、get design、fillreport。所以只需将设计传递给fillmanager@MichaelKnight,您正在自行填写子报表,它不包含在主报表中(从该报表调用)…你可以这样做,然后在导出过程中合并它们…你想继续,就像这样…我可以更新答案(在当前答案中,它包含在主报告中,因此你只需调用1个报告)@Peter Friberg我修改了我的代码,以便对父报告进行一次调用,这有什么意义?如何