iReport 参数未被字段通知

iReport parameter not being informed by field

我正在使用 iReport - 我第一次使用它 - 我正在尝试制作一个涉及将参数传递给子报表的报表。我无法让它工作,所以我做了以下测试:

  1. 我有一个大型查询,它从我的数据库中获取各种字段 - 当我预览报告时,这些字段被拉取并显示(一遍又一遍,等等,很多东西被拉取)。
  2. 我在主报表上创建了一个名为 "myparam" 的新参数。我将它的默认值设置为从我的数据库中成功提取的字段之一。
  3. 我创建了一个文本字段来显示此参数 - 其目的是回应已在我的报告中显示的字段。如果我能让它做到这一点,我想我能把它正确地 "plug in" 到我的子报告中。

问题是 - 当我预览时,我被要求给参数一个值 - 我选择默认值,它默认为我设置的字段,这意味着它现在应该回显那个字段(也就是我想要它回显那个字段)。但它并不回应那个领域。相反,它只是一遍又一遍地显示 null 。这是我正在谈论的截图

这是我的报告设置:

这是我在 xml:

中设置默认值的证明
    <parameter name="myparam" class="java.lang.String">
    <defaultValueExpression><![CDATA[$F{TCORDERID}]]>  </defaultValueExpression>
</parameter>

这是错误生成的报告片段(又名 myparam 未正确填充)。

它们都是字符串

根据我对参数的理解,它们在创建时传递给 report/subreport。您已将参数的默认值设置为您的字段之一,生成报告时尚未填充该字段。

我建议添加一个简单的子报表(这是您无论如何都想使用参数的原因),删除主报表上的参数,然后将其添加到子报表(使用文本字段来显示它)。

现在,将参数添加到主报表中的子报表对象。 (这是在 iReport 的子报表属性部分下。

Name: 子报表中Parameter的名称。

表达式:将传递给子报表的主报表字段。

因此您的主报告将在子报告详细信息下包含以下内容:

<subreportParameter name="myparam">
  <subreportParameterExpression><![CDATA[$F{TCORDERID}]]></subreportParameterExpression>
</subreportParameter>

然后是子报表中的参数:

<parameter name="myparam" class="java.lang.String">
    <defaultValueExpression><![CDATA["No result"]]></defaultValueExpression>
</parameter>