【问题标题】:Return value from subdataset in iReport从 iReport 中的子数据集返回值
【发布时间】:2014-02-26 07:54:24
【问题描述】:
我知道可以从子报表获取返回值到 iReport 中的主报表。还有子数据集,它们也可以有自己的 SQL 查询,如子报表。据我了解,子数据集只能与列表、图表等一起使用,但我不知道如何访问主数据集/报告中的子数据集字段、变量和参数。
是否也可以从子数据集中获取返回值?如果没有,如何访问子数据集中的值?
【问题讨论】:
-
-
@MukeshSharma 我认为that 是重复的,因为我在 2014 年发布了这个问题。你提到的问题来自 2019 年。
标签:
jasper-reports
ireport
【解决方案1】:
目前无法在主报表结构中使用子数据集查询。您最好的选择是使用表格元素,可能只输出一个字段来完成您想做的事情。
否则,您需要重新构建查询结构以满足您在主报告中包含数据的需要。
【解决方案2】:
在主报告中,
<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>
【解决方案3】:
在属性>子报表属性>参数>添加>单击“值表达式”附近的图标,然后添加您的参数或字段。并转到子报表以在报表检查器选项卡 > 参数 > 添加参数中添加同名参数。
【解决方案4】:
是否也可以从子数据集中获取返回值?
有可能。
在主报告中定义变量(整数 - 仅作为示例):
<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"。没有这个就行不通了。