我有一个包含子报表的报表模板;
在主报告中,我有一些参数也应该在子报告中可用。
主要报告参数定义如下:
<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)
有什么问题吗?
谢谢
最佳答案
首先将子报表 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".
关于java - 如何正确为JasperReport中的子报表提供参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13785365/