我知道可以从子报告获取返回值到iReport中的主报告。还有子数据集,它也可以像子报表一样拥有自己的SQL查询。据我所知,子数据集只能用于列表,图表等,但我不知道如何访问主数据集/报告中的子数据集字段,变量和参数。
是否也可以从子数据集中获取返回值?如果没有,如何从子数据集中访问值?
答案 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>