0

サブデータセットとともにさまざまなフィールドを持つレポートを使用しています。

<subDataset name="mySubDataset">
    <field name="name" class="java.lang.String"/>
    <field name="net" class="java.lang.String"/>
    <field name="tax" class="java.lang.String"/>
    <field name="total" class="java.lang.String"/>
</subDataset>
<parameter name="myDataSource" class="net.sf.jasperreports.engine.JRDataSource" isForPrompting="false"/>
<field name="totalAmount" class="java.lang.String"/>

次のように、テーブル コンポーネントを使用して「mySubDataset」を反復処理します。

<jr:table>
   <datasetRun subDataset="mySubDataset">
      <dataSourceExpression><![CDATA[$P{myDataSource}]]></dataSourceExpression>
   </datasetRun>
...

私が知りたいのは、テーブル内の「totalAmount」フィールドを参照することは可能ですか? つまり、「totalAmount」フィールドを使用するテーブルの最後に「total」行を追加したいと考えています。たとえば、おそらく次のように columnFooter 要素を使用します。

<jr:column width="110">
    <jr:tableHeader height="25">
        <staticText>
            <reportElement x="0" y="0" width="110" height="25" />
        </staticText>
    </jr:tableHeader>
    <jr:columnHeader height="25">
        <textField>
            <reportElement x="0" y="0" width="110" height="25"/>
            <textFieldExpression><![CDATA[$R{netCol}]]></textFieldExpression>
        </textField>
    </jr:columnHeader>
    <jr:columnFooter height="25">
        <textField>
            <reportElement x="0" y="0" width="110" height="25" />
            <textFieldExpression><![CDATA[$F{totalAmount}]]></textFieldExpression>
        </textField>
    </jr:columnFooter>
    <jr:detailCell height="25">
        <textField>
            <reportElement x="0" y="0" width="110" height="25" />
            <textFieldExpression><![CDATA[$F{net}]]></textFieldExpression>
        </textField>
    </jr:detailCell>
</jr:column>

私は間違ったツリーを吠えているように感じます。「正しい」解決策は、最初に subDataset に totalAmount を格納することですが、これが利用可能なオプションであるかどうかはわかりません。

更新:ジャスパー フォーラムに質問がクロスポストされました

4

1 に答える 1

3

解決策は、次のように、マスターデータソースのフィールドをsubDatasetのパラメーターとして追加することでした。

<subDataset name="mySubDataset">
  <parameter name="totalAmount" class="java.lang.String"/>
  <field name="name" class="java.lang.String"/>
  <field name="net" class="java.lang.String"/>
  <field name="tax" class="java.lang.String"/>
  <field name="total" class="java.lang.String"/>
</subDataset>

次に、次のようにテーブルのdatasetRunにパラメータを入力します。

<datasetRun subDataset="myDataSet">
    <datasetParameter name="totalAmount">
        <datasetParameterExpression><![CDATA[$F{totalAmount}]]></datasetParameterExpression>
    </datasetParameter>
    <dataSourceExpression><![CDATA[$P{myDataSource}]]></dataSourceExpression>
</datasetRun>

次に、tableFooterのtotalAmountを次のように参照できます。

<jr:tableFooter height="25">
    <textField>
        <reportElement x="0" y="0" width="200" height="25" style="SubSummary"/>
        <textFieldExpression><![CDATA[$P{totalAmount}]]></textFieldExpression>
    </textField>
</jr:tableFooter>
于 2012-08-28T12:25:11.360 に答える