如何将参数从一个子报表传递到另一个子报表

时间:2013-07-04 09:08:53

标签: jasper-reports

我是新手,我正在使用 iReport 4.5 设计我的报告。

我有一份主报告( MainReport )和三个子报告 Sub1 Sub2 SUB3

Sub1 中我有三个摘要变量,例如 presentPayable presentPayment 余额

Sub2 中我有一个摘要变量说 totalCost

我需要在 Sub3 中使用 Sub1 Sub2 的摘要变量。

我该怎么做?这可以将变量从一个子报告传递给另一个吗?

否则请为我提供任何替代方案。

1 个答案:

答案 0 :(得分:2)

要将子报表中的值传递给其父级,父级必须首先拥有一个变量来接收该值。在您的情况下,主报告应该有4个变量,分别用于 presentPayable presentPayment 余额 totalCost

接下来,您需要在主报告中的returnValue元素中添加subreport元素。此元素使用属性subreportVariabletoVariable将子报表中的变量映射到此报表中的变量。

要在iReport中执行此操作,请单击主报表中的子报表元素。在属性列表中,单击返回值。应出现一个对话框。单击添加按钮。键入子报表变量的名称,然后在此报表中选择要将其传输到的变量。您应该将计算类型保留为“Nothing”,这将指示jasper只使用新值覆盖变量。单击确定添加此项,然后重复其他变量/子报告。

现在,当您运行报表时,每次子报表完成处理时,子报表中变量的当前值都会传回主报表中的指定变量。

要在另一个子报表中使用该值,您需要将变量从主报表传递到另一个子报表作为参数。这包含两部分:将subreportParameter添加到父报表中的subreport元素,并将parameter添加到子报表本身。

在iReport中,单击主报表中的子报表元素。在属性列表中,单击 Parameters 。在出现的对话框中,单击添加按钮。为参数指定名称(例如 presentPayable )并输入引用主报表中变量的值表达式(例如$V{presentPayable})。对要传入的每个变量重复此操作。

接下来,打开子报表。在报表检查器中,右键单击 Parameters 。选择添加参数,然后重命名新参数以匹配您在上一步中输入的名称。

在子报表中,您现在应该可以像任何其他参数一样引用这些值(例如$P{presentPayable})。