我遇到了一個非常有問題的行爲,它完全違背了使用子數據集的目的。JasperReports與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使用它(或堆疊條形圖是精確的,但它並不重要):
<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查詢和參數化時,結果纔會返回。如果4個組件中的任何一個不匹配 - 它將無法生成報告或返回空白文檔。
我玩uuids讓他們匹配 - 這使零差異。
如果您使用「select 1」作爲主數據集的查詢,它會起作用嗎?如果您沒有查詢主數據集,我相信Jasper Reports環境不會創建任何波段(用於主報告)。 –
你是對的,發佈這個答案,我會接受它。 – Aubergine