3
我需要在我的報告中有多個查詢,所以我添加了一個新的數據集。 問題是我不能在我的報告中使用新數據集的字段,錯誤是:字段不存在。iReport,如何打印不同表格的字段
那麼,我怎樣才能在我的報告(打印不同表格的字段)多個查詢,而無需爲每個字段創建一個子報表?
謝謝。
我需要在我的報告中有多個查詢,所以我添加了一個新的數據集。 問題是我不能在我的報告中使用新數據集的字段,錯誤是:字段不存在。iReport,如何打印不同表格的字段
那麼,我怎樣才能在我的報告(打印不同表格的字段)多個查詢,而無需爲每個字段創建一個子報表?
謝謝。
不幸的是,這不是iReport的工作原理。您需要將所有數據放入一個數據集中以並排使用這些字段。請參閱@ GenericJon關於使用datasetRun
的詳細答案,其中您的字段用作輸入參數以定義另一個數據集。
如果您確實希望參數可以用於在數據集運行中傳遞輸出字段。這將輸出數據集1> Field1/Dataset2> Field2。
<subDataset name="TotalUsers">
<parameter name="Users" class="java.lang.Integer" isForPrompting="false"/>
<parameter name="Date" class="java.util.Date" isForPrompting="false"/>
<queryString language="SQL">
<![CDATA[CALL GetTotalUsersAtDate($P{Date})]]>
</queryString>
<field name="TotalUsers" class="java.lang.Long"/>
</subDataset>
...
<componentElement>
<reportElement x="0" y="78" width="555" height="16"/>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
<datasetRun subDataset="TotalUsers">
<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
<datasetParameter name="Users">
<datasetParameterExpression><![CDATA[$F{MusicSubscribers}]]></datasetParameterExpression>
</datasetParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:listContents height="16" width="555">
<textField pattern="#,##0.00 %" isBlankWhenNull="true">
<reportElement style="table_TD" x="475" y="0" width="80" height="16"/>
<textElement/>
<textFieldExpression><![CDATA[$P{Users}.doubleValue()/$F{TotalUsers}.doubleValue()]]></textFieldExpression>
</textField>
<staticText>
<reportElement style="table_TD" x="0" y="0" width="475" height="16"/>
<textElement textAlignment="Left" markup="none"/>
<text><![CDATA[Proportion of total users]]></text>
</staticText>
</jr:listContents>
</jr:list>
</componentElement>
我想進一步建議,如果您的數據源是一個數據庫,你做盡可能多的數學和的iReport的整理外面太,即使用存儲過程。
您可以在[此問題](http://stackoverflow.com/q/7482412/876298)上看到@GenericJon答案, – 2011-12-29 06:48:15