2

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

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

问题是什么?

谢谢

4

3 回答 3

1

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

第1步:-

    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 

然后完成。

现在选择子报表,然后转到属性选项卡,它不会在 Ireport 中运行并选择“子报表表达式”,您必须在此处提供 Jasperserver 中的子报表的路径

 format "repo:/path_of_subreport in jasper".
于 2012-12-10T10:20:12.017 回答
1
<subreportParameter name="PID">
    <subreportParameterExpression>
        <![CDATA[$P{PID}]]> 
    </subreportParameterExpression>
</subreportParameter>
于 2012-12-12T08:56:07.513 回答
0

大家好,
但问题在于我的 JasperReport 库和 iReport 之间的版本不匹配。
使用相同的版本解决了这个问题。

于 2013-01-05T18:50:54.200 回答