子报表返回除最后一页之外的空值

时间:2012-12-07 13:23:13

标签: jasper-reports ireport

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

XML SOURCE

<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>

问题描述

我的主要报告正在迭代&lt; bordereau&gt;节点。
子报告(在主报告中)正在迭代&lt;页面&gt;节点,在“详细信息”部分的底部有分页符 (如果在每个&lt; dosimetre&gt;节点上迭代,子报表中的子子报表,但在我的问题中并不重要)

我需要做的是,在我的主报告的“页脚”部分中,显示&lt; numpage&gt;节点

我做了什么

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

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

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

我得到了什么

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

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

我不知道该做什么......我试着玩变量的“重置类型”,以便使用文本字段的“评估时间”。 但每一次尝试都是无效的......

见到你

我希望我很好地解释了我的问题,我不是英语母语人士,所以我为糟糕的英语道歉......我的英语很糟糕......我应该心疼!

非常感谢您的帮助。

尼古拉斯

2 个答案:

答案 0 :(得分:1)

我知道有人问这个问题,但我遇到了类似的问题。我试图获取各种子报告的返回值,以便我可以在页脚中更新“引用”。

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

我还没有找到解决方法,并尝试过重置类型,计算类型和评估时间。

编辑我发现此问题的唯一解决方案是创建自定义scriptlet。您可以将scriptlet传递给子报告。该类的相同实例将传递给子报告,因此您可以在构建模板的任何时候设置和检索值。

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

答案 1 :(得分:0)

您是否尝试获取页码?如果是,您只需从主报告页面页脚中的iReport调色板中删除页码字段。