【问题标题】:Subreport returning null values except for the last page子报表返回除最后一页以外的空值
【发布时间】:2014-07-09 21:27:07
【问题描述】:

我在使用子报表时遇到了 iReport 的问题,我正在使用 XML 源。

XML 源

<bordereaux>
    <bordereau>
        <pages>
            <page>
                <numpage>1</numpage>
                <dosimetres>
                    <dosimetre>
                        <information>information</information>
                    </dosimetre>
                    <dosimetre>
                        ...
                    </dosimetre>
                    <dosimetre>
                        ...
                    </dosimetre>
                </dosimetres>
            </page>
            <page>
                ...
            </page>
            <page>
                ...
            </page>
            <page>
                ...
            </page>
        </pages>
    </bordereau>
    <bordereau>
        ...
    </bordereau>
    <bordereau>
        ...
    </bordereau>
<bordereaux>

问题描述

我的主要报告是在 节点上进行迭代。
子报表(在主报表中)在 节点上进行迭代,在“详细信息部分”的底部有一个分页符。
(如果在每个 节点上进行迭代,则子报告中的子报告,但这在我的问题中并不重要)

我需要做的是,在我的主报告的“页脚”部分,显示 节点的值。

我做了什么

我在每个报告中添加了 1 个名为“numPage”的变量,都是 java.lang.String

  • 我的子报表中的那个是“变量表达式”$F{numpage}。

  • 我的主报告中的一个通过“返回值”属性中的子报告链接到第一个

我得到了什么

我的主要报告很好地迭代了我的 节点
我的子报表很好地在我的 节点上迭代
如果我在子报表中打印 $F{numpage} 字段,我可以看到它。
如果我在子报表中打印变量 $V{numPage},我可以看到它。

但是如果我在我的主报告中打印变量 $V{numPage},我只能看到它在最后一次“ 节点迭代”中的值,否则我会得到一个漂亮而流畅的“null”

我不知道该怎么办......我尝试使用变量的“重置类型”,使用文本字段的“评估时间”。 但每一次尝试都无济于事……

再见

我希望我能很好地解释我的问题,我不是以英语为母语的人,所以我为糟糕的英语道歉......我的英语很糟糕......我应该感到难过!

非常感谢您的帮助。

尼古拉斯

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    我知道有人问过这个问题,但我也有类似的问题。我正在尝试获取各种子报告的返回值,以便可以更新页脚中的“参考”。

    我认为这是因为子报表的“返回值”仅在整个子报表完成后才返回,因此变量在此之前不可用。

    我还没有找到解决这个问题的方法,并且已经尝试了重置类型、计算类型和评估时间。

    编辑我发现这个问题的唯一解决方案是创建一个自定义脚本。您可以将 scriptlet 传递给子报告。该类的相同实例会传递给子报表,因此您可以在整个模板构建过程中随时设置和检索值。

    为了在子报告中调用脚本中的方法,我在子报告中定义了一个变量,并在表达式中执行了类似$P{SCRIPTLET}.setString("foo") 的操作。 setString 方法必须返回一个 String 以便设置变量,然后您可以随时调用主报告中的另一个方法$P{REPORT_SCRIPTLET}.getString() 来获取值。

    【讨论】:

      【解决方案2】:

      您是否正在尝试获取页码?如果是,您可以简单地从 iReport 面板中的主报表页脚中拖放一个页码字段。

      【讨论】:

      • 不,我想要我的 xml 源中的字段值。 (我没有提到还有其他字段,其他变量,例如 节点
      • 我不知道为什么,以及有什么关系,但是您的评论让我想到:“我的上帝,也许我可以将页脚放在子报表中而不是主报表中”。问题解决了,谢谢 ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多