当前位置: 首页 > 知识库问答 >
问题:

如何正确地为JasperReport中的子报表提供参数

袁霍英
2023-03-14

我有一个包含子报表的报表模板;
在主报表中,我有一些参数也应该在子报表中可用。
主报表参数如下定义:

<parameter name="PID" class="java.lang.Integer"/>

在子报表中,我用相同的名称定义了相同的参数:

<parameter name="PID" class="java.lang.Integer"/>

我为子报表提供了主报表的参数,如下所示:\

     <subreport>
            <reportElement x="0" y="0" width="555" height="50"/>
            <parametersMapExpression>
                 new HashMap($P{REPORT_PARAMETERS_MAP})
            </parametersMapExpression>
            <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
            <subreportExpression class="java.lang.String"><![CDATA["subRPT.jasper"]]></subreportExpression>
     </subreport>
SEVERE: null
net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Incompatible java.lang.Integer value assigned to parameter PID in the subRPT dataset.
    at net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:711)
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:329)
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:419)
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:378)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2035)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
    at biorec.control.reporting$1.doInBackground(reporting.java:177)

共有1个答案

尹钱青
2023-03-14

首先在Jasper服务器中保存子报表JRXML,然后在桌面中保存您想要使用的子报表,然后从调色板中拖动子报表元素。

第一步:-

    Select "Use an existing report" option and select the same subreport 

下一个

     it will ask for database, if you are using the same database 
    then it will ask for parameters , select all the parameter expression 
  choose "Store the directory name in  a parameter" option 
 format "repo:/path_of_subreport in jasper".
 类似资料:
  • 我有一个jasper(主)报告嵌入在一个罐子里。报告是从java输入流中获得的。jasper报表由IReport3.7.0制作 在这份主报告中,有几份子报告。此刻我不得不用 非常感谢!

  • 我想用和JasperSoft Studio6.5生成一个pdf文件。 在我的文件中,我有两个级别的子报告。 我对这份报告的布局有更多的困难。此报表包含(1°子报表)一个动态文件列表(带有描述字段,在某些情况下非常冗长)。 “说明”字段 第二个子报告中所列行的编号 如果2°子报告比第一个报告高,我有一个问题,如果我有一个页面改变。因此,如果第一个子报告高于第二个子报告,则第二个子报告不会跟随第一个子

  • 问题内容: 我正在使用JDK 1.6.0_26中的VisualVM来分析在Tomcat下运行的Java Webapp,但是VisualVM经常告诉我它没有足够的内存来拍摄快照,并使用-Xmx开关为Netbeans提供更多的内存。 。问题是,我在Netbeans之外运行VisualVM,那么如何为jvisualvm.exe提供JVM参数? 问题答案: 应该能够修改内存中的设置 并且在排队。

  • 我正在使用和来记录WebApi2项目。我有一个使用XML正文并返回文本响应的操作。我希望留档包含XML输入的示例-例如

  • 我有一个git存储库,当对特定分支进行推送时,它将.Java文件下拉到生产服务器。(工作)我正在运行带有openJDK包的Debian9。(jdk 1.8.0) 我决定在服务器上编译新的.Java文件,然后执行它们。我的问题是,当将-cp参数指定为“lib/*.jar”时,在编译过程中我得到:错误包jar.example.class不存在import jar.example.class; 对从另一

  • 问题内容: 我想提供查询的表名作为命令参数,如下所示: 这似乎导致了该查询:这将导致错误(注意单引号)。 我真的需要为此进行字符串连接吗?从安全的角度来看这没关系,因为用户无法更改表名,但是用于创建SQL查询的字符串连接总是让我感到毛骨悚然… 谢谢,埃里克 问题答案: 表名不能作为参数发送。表名称在解析时解析,因为计划和此类操作需要它们。仅在执行程序(或优化程序,必要时)时替换参数。 是的,您将需