自然にデータセットを持つiReportにテーブルがあり、テーブルのデータセットで定義および初期化された変数があり、値を返します(テーブルの範囲外ではなく、テーブルの範囲内で使用します)。テーブルを保持するメイン レポート。
どうすればそれを行うことができますか、または代替手段はありますか?
自然にデータセットを持つiReportにテーブルがあり、テーブルのデータセットで定義および初期化された変数があり、値を返します(テーブルの範囲外ではなく、テーブルの範囲内で使用します)。テーブルを保持するメイン レポート。
どうすればそれを行うことができますか、または代替手段はありますか?
を使用してコンポーネントから値を返す正しい方法 (ジャスパー レポート v.5/v.6)subDataset
は、変数を使用し、メイン レポートと の両方で変数を定義することですsubDataset
。
例(テーブルのレコード数をメインレポートに返す)
メインレポートで変数を定義します
<variable name="TABLE_COUNT" class="java.lang.Integer" resetType="None">
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
変数を定義します (例ではsubdataset
、組み込み変数が使用されます$V{REPORT_COUNT}
)。
datasetRun
どのsubDataset
変数 ( fromVariable
) がどのメイン レポート変数 ( toVariable
)に返されるかを示します。
<datasetRun subDataset="tableData" uuid="fa5df3de-f4c5-4bfc-8274-bd064e8b81e6">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue fromVariable="REPORT_COUNT" toVariable="TABLE_COUNT"/>
</datasetRun>
その後、変数をメイン レポートで使用できます。ただし、正しいEvaluationTimeTABLE_COUNT
を設定することを忘れないでください。
値を表示します(メイン レポートで)
<textField evaluationTime="Report">
<reportElement x="0" y="0" width="100" height="20" uuid="d67ddb3e-b0cc-4fae-9e05-f40eb0f7e059"/>
<textFieldExpression><![CDATA[$V{TABLE_COUNT}]]></textFieldExpression>
</textField>
合理的に聞こえます...しかし、それが可能かどうかはわかりません。これは、有用な拡張要求になる可能性があります。
別の方法は、サブレポートを使用することです。テーブルで可能なことは、サブレポートでも可能です。サブレポートには戻り値があり、必要な情報を返すことができます。
テーブルのデータセットからメインレポートに変数を返すことはできませんが、その逆は可能です。代替案は、mdahlmanによって提案されたとおりにすることができます。代わりにサブレポートを使用してください。
Map Type の場合、table-set からメイン レポートに値を返す残りの型は使用できません。
値を返すためのオプションがあるため、サブレポートを使用できますが、可能であれば、テーブルの代わりにサブレポートを使用してみてください。
テーブルのデータセットからメイン レポートに値を返すことができるようになりました。
テーブルjasper studio 6.0.1,I
のデータセットという名前のプロパティが見つかった場合、戻り値が設定されています。しかし、セットに入ると、「戻り値を構成する」という形式が間違っていることがわかりました.jasperスタジオは「変数から変数へ」で間違っています.stuioは2つの変数を逆にします. 「変数から」はテーブルのローカル変数であり、「値へ」はメインレポート変数です。ソースで手動編集し、削除する必要があります"incrementerFactoryClass=""".
私はテストしました、それは大丈夫です。戻り値はメインレポートに出力されます。
次は私のjrxmlの一部です。
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="workscore" uuid="307278bc-db98-4de2-9b50-dea5dc69b496">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue fromVariable="returnscore" toVariable="workscore"/>
</datasetRun>