从iReport中的子数据集返回值

时间:2014-02-26 07:54:25

标签: jasper-reports ireport

我知道可以从子报告获取返回值到iReport中的主报告。还有子数据集,它也可以像子报表一样拥有自己的SQL查询。据我所知,子数据集只能用于列表,图表等,但我不知道如何访问主数据集/报告中的子数据集字段,变量和参数。

是否也可以从子数据集中获取返回值?如果没有,如何从子数据集中访问值?

4 个答案:

答案 0 :(得分:1)

目前无法在主报表结构中使用子数据集查询。您最好的选择是使用表元素,可能只输出一个字段来完成您想要的操作。

否则,您需要重新构建查询,以满足您在主报表中获取数据的需求。

答案 1 :(得分:0)

in properties>子报告属性>参数>添加>点击图标附近"值表达"然后添加您的参数或字段。并转到子报表以在报表检查器选项卡中添加参数同名>参数>添加参数。

答案 2 :(得分:0)

  

是否还可以从子数据集中获取返回值?

可能

在主报表中,您定义了变量(整数-仅作为示例):

<variable name="GLOBAL_VARIABLE" class="java.lang.Integer" resetType="None">
   <initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>

内部子数据集定义另一个变量。

datasetRun中,您可以将值从内部变量返回到全局变量:

<datasetRun subDataset="someDataset" uuid="111">
   <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
   <returnValue fromVariable="SUB_DATASET_VARIABLE" toVariable="GLOBAL_VARIABLE"/>
</datasetRun>

然后只需在主报表中调用您的变量即可。

<textField evaluationTime="Report">
<reportElement x="0" y="0" width="200" height="20" uuid="333"/>
<textFieldExpression><![CDATA[$V{GLOBAL_VARIABLE}]]></textFieldExpression>
</textField>

请注意evaluationTime="Report"。没有这个就行不通。

答案 3 :(得分:0)

在主报告中,

<variable name="sum" class="java.lang.Double" resetType="None" calculation="System">
        <initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>

内部子数据集定义另一个变量。 在datasetRun中,您可以返回它,

在主报告中,

<textField evaluationTime="Now">
                <reportElement x="243" y="12" width="100" height="30" uuid="3b6ae08b-3155-457c-9a27-6ed79b170acb"/>
                <textFieldExpression><![CDATA[$V{sum}]]></textFieldExpression>
</textField>