简体   繁体   English

Java Crystal Report SDK - 报表和子报表

[英]Java Crystal Report SDK - Report & SubReport

I'm trying to generate a report using Crystal Report SDK in Java composed by a main report and a subreport.我正在尝试使用 Java 中的 Crystal Report SDK 生成一个报告,该报告由一个主报告和一个子报告组成。

I do want to generate the report only if there is something returns by my stored procedure and for doing that I execute the proc manually and launch the report generation only if my ResultSet != null.我确实希望仅当我的存储过程返回某些内容时才生成报告,为此我手动执行 proc 并仅在我的 ResultSet != null 时才启动报告生成。

But, my subreport has to be generated through Crystal.但是,我的子报表必须通过 Crystal 生成。

  • I use the setTablesDatasource() method for my main report for using my ResultSet我将 setTablesDatasource() 方法用于我的主要报告以使用我的 ResultSet
  • For my subreport:对于我的子报告:

_ I use the setTableslocation() for getting the values and generating the report through crystal _ 我使用 setTableslocation() 获取值并通过 Crystal 生成报告

_ I set all the parameters needed in the ParameterFieldController of my subreport. _ 我在子报表的 ParameterFieldController 中设置了所有需要的参数。

However, I'm getting this error in my console :但是,我在控制台中收到此错误:

Missing parameter values.---- Error code:-2147217394 Error code name:missingParameterValueError缺少参数值。----错误代码:-2147217394 错误代码名称:missingParameterValueError

Even though the subreport's parameters are correctly setted.即使子报表的参数设置正确。

If I generate my report with no subreport or with report and no needed parameter, the generation is just fine.如果我生成的报告没有子报告或报告且没有需要的参数,那么生成就可以了。

Am I setting my parameters in a wrong way ?我是否以错误的方式设置了我的参数?

After trying a lot of stuff for integrating my subreport without using another ResultSet, here is the way for setting the parameters for the subreport :在尝试了很多东西来集成我的子报表而不使用另一个 ResultSet 之后,这里是设置子报表参数的方法:

You have to use the ParameterFieldController of the main report and not the one of the subreport... Logic.您必须使用主报告的 ParameterFieldController 而不是子报告之一...逻辑。

ParameterFieldController paramFieldController = rptClientDoc.getDataDefController().getParameterFieldController(); ParameterFieldController paramFieldController = rptClientDoc.getDataDefController().getParameterFieldController(); paramFieldController.setCurrentValue(subreport_name, parameter_name, parameter_value); paramFieldController.setCurrentValue(subreport_name, parameter_name, parameter_value);

And now, it works just fine !现在,它工作得很好!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM