我遇到了一个非常有问题的行为,这完全违背了使用子数据集的目的。
每当我声明subDataSet:
<subDataset name="dataset1" uuid="b8a31d7f-9906-4db0-ac81-155091b1817a">
<parameter name="Parameter3" class="java.lang.String">
<defaultValueExpression><![CDATA["SELECT country, count(*) AS number_of_sites FROM sites GROUP BY country ORDER BY number_of_sites DESC LIMIT 5"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[$P{Parameter3}]]>
</queryString>
<field name="country" class="java.lang.String"/>
<field name="number_of_sites" class="java.lang.Long"/>
</subDataset>
并在barChart中使用它(或准确堆叠BarChart,但没关系):
<categoryDataset>
<dataset>
<datasetRun subDataset="dataset1" uuid="0a388bb3-2e57-4880-9b48-27e0a2afd415"/>
</dataset>
<categorySeries>
<seriesExpression><![CDATA[$F{country}]]></seriesExpression>
<categoryExpression><![CDATA[$F{country}]]></categoryExpression>
<valueExpression><![CDATA[$F{number_of_sites}]]></valueExpression>
<labelExpression><![CDATA[$F{number_of_sites}.toString()]]></labelExpression>
</categorySeries>
</categoryDataset>
我得到空文档,我100%确定报表适配器正常工作。所以为了运行这个并获得结果,我出于某种原因需要另外包含重复的条目:
<parameter name="Parameter3" class="java.lang.String">
<defaultValueExpression><![CDATA["SELECT country, count(*) AS number_of_sites FROM sites GROUP BY country ORDER BY number_of_sites DESC LIMIT 5"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[$P{Parameter3}]]>
</queryString>
这是在JRXML中的subDataSet块之外的某处添加的。这让我感到绝望,因为我遇到了许多碧玉或设计上的不一致。如果主查询需要匹配subDataset,那么这会破坏报告中多元化的目的。在我的情况下,我甚至不需要主报告查询我希望有许多子数据集,每个子数据集都有自己的查询。
我使用报告连接它没有改变任何东西,结果仅返回并且仅当主查询匹配subDataset查询以及参数化时。如果4个组件中的任何一个不匹配 - 它将无法生成报告或返回空文档。
我与uuids一起玩,使他们匹配 - 这是零差异。
答案 0 :(得分:0)
如果您没有对主数据集进行查询,我相信Jasper Reports环境不会为您的主报告创建任何频段。
您可以尝试类似&#34;选择1作为虚拟&#34;例如,您的查询。
Jaspersoft Studio提供了一个名为&#34; One Empty Record&#34;的数据源。它也可能对您的目的有用。