【问题标题】:How to pass the parameter from one subreport to another subreport如何将参数从一个子报表传递到另一个子报表
【发布时间】:2017-04-24 15:23:11
【问题描述】:

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

我有一个主报表 (MainReport) 和三个 子报表 (Sub1, Sub2, 子3)

Sub1 我有三个汇总变量,分别是 presentPayablepresentPaymentbalance

Sub2 我有一个汇总变量说 totalCost

我需要在我的Sub3中使用Sub1Sub2的汇总变量。

我该怎么做?这是否可以将变量从一个 subreport 传递到另一个?

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

【问题讨论】:

标签: jasper-reports


【解决方案1】:

要将值从子报表传递到其父级,父级必须首先有一个变量来接收该值。在您的情况下,主报告应该有 4 个变量,presentPayablepresentPaymentbalancetotalCost 各有一个变量.

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

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

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

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

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

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

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

【讨论】:

  • 嗨 GenericJon,非常感谢您提供答案。除了最后一点之外,我已完成您提到的所有步骤。也就是说,要在另一个子报表中使用该值,只需从主报表传递变量作为参数报告给另一个子报告。你能逐步解释一下吗?因为我不知道如何将变量作为参数从一个报告传递到另一个报告。
  • @NSS:我添加了一些关于如何将其作为参数传递的步骤。希望对您有所帮助。
  • 不确定是否需要提出新问题; lmk。我跟着步骤。我认为我的问题相同。对于 Table1 中的 Date1,我需要每个实体的 Volume1,Table2 中的 Date2 的 Vol2,以及 Table3 中的每个实体的 [Vol2-Vol1]。 //我将前两个表中的实体、Vol1 和 Vol2 输入到 MainReport,然后输入到 Table3。 ///但是,当我预览时,我收到此错误:原因:net.sf.jasperreports.engine.JRException:变量 WellID_Return 不能从源变量 WellID 分配。在 net.sf.jasperreports.engine.fill.AbstractVariableReturnValueSourceContext.check(AbstractVariableReturnValueSourceContext.java:77)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多