0

JasperReportsは初めてです。

メイン レポートにパラメータとして渡された結果セットがあります。メイン レポートから、それをデータソースとしてサブレポートに渡す必要があります。

param = super.getParam(param, "MY_RESULT_SET", resultSet);
JasperPrint jasperPrint = JasperFillManager.fillReport("myJasper.jasper", param, dataSource);

myJasper.jrxmlからのスニペット:

<parameter name="MY_RESULT_SET" class="java.sql.ResultSet"/>
<subreport>
    <reportElement x="285" y="0" width="270" height="20"/>              
    <dataSourceExpression><![CDATA[$P{MY_RESULT_SET}]]></dataSourceExpression>
    <subreportExpression><![CDATA["mySubreport.jasper"]]></subreportExpression>
</subreport>

上記のようにすると、以下の例外が発生します

java.lang.ClassCastException: com.mysql.jdbc.JDBC4ResultSet cannot be cast to net.sf.jasperreports.engine.JRDataSource
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:356)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:275)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2021)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)

誰でも私を案内してもらえますか?

4

1 に答える 1

0

JRResultSetDataSource代わりに a を作成して渡す必要があります。これは、次を追加するのと同じくらい簡単です。

JRDataSource myResultSetDS = new JRResultSetDataSource(resultSet)

myResultSetDS次に、それ自体ではなくパラメーターとして渡しresultSetます。

于 2012-10-26T10:03:05.850 に答える