【发布时间】:2019-10-03 03:12:31
【问题描述】:
我在使用 Java Bean 数据源 使用交叉表中的数据源表达式作为 $P{REPORT_CONNECTION}
我可以成功填充详细部分的数据,
但是当我尝试在交叉表中使用 bean 数据时;预览时交叉表为空。
有谁知道在这个特定的设置上该怎么做?
【问题讨论】:
我在使用 Java Bean 数据源 使用交叉表中的数据源表达式作为 $P{REPORT_CONNECTION}
我可以成功填充详细部分的数据,
但是当我尝试在交叉表中使用 bean 数据时;预览时交叉表为空。
有谁知道在这个特定的设置上该怎么做?
【问题讨论】:
$P{REPORT_CONNECTION} 是 JDBC 数据库连接,因为您使用的是“Java Bean 数据源”,所以您不应该传递数据库连接,而是通过 JRDatasource。
通过指定dataSourceExpression 将数据源传递给交叉表
<crosstabDataset>
<dataset>
<datasetRun subDataset="Dataset1" uuid="bcc868c0-ea35-4a17-b570-2d51dbe93e8d">
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
</datasetRun>
</dataset>
</crosstabDataset>
如果您喜欢使用当前的主报表数据源(如上),您可以简单地不指定任何数据集或连接,这将自动使用主数据源,无需定义子数据集。
您需要小心,JRDatasource 在填充时被“消耗”,因此如果您已经使用过一次(jrxml 中存在详细带),它会被消耗。要更好地理解这一点,请参阅例如 How to use same JRBeanCollectionDataSource on multiple sub reports?
【讨论】: