Java 如何通过主报告将结果集传递到子报告';s参数?

Java 如何通过主报告将结果集传递到子报告';s参数?,java,jasper-reports,subreport,Java,Jasper Reports,Subreport,我对JasperReports不熟悉 我有一个作为参数传递给主报表的结果集。从主报表中,我需要将其作为数据源传递给子报表 param=super.getParam(param,“我的结果集”,结果集); JasperPrint-JasperPrint=JasperFillManager.fillReport(“myJasper.jasper”,参数,数据源); myJasper.jrxml中的代码片段: 按照上面的方法,我得到了下面的例外 java.lang.ClassCastExcept

我对JasperReports不熟悉

我有一个作为参数传递给主报表的结果集。从主报表中,我需要将其作为数据源传递给子报表

param=super.getParam(param,“我的结果集”,结果集);
JasperPrint-JasperPrint=JasperFillManager.fillReport(“myJasper.jasper”,参数,数据源);
myJasper.jrxml中的代码片段:


按照上面的方法,我得到了下面的例外

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)

有人可以指导我吗?

您需要构造一个
jresultsetdatasource
并传递它。这应该很简单,只需添加:

JRDataSource myResultSetDS = new JRResultSetDataSource(resultSet)

然后将
myResultSetDS
作为参数传递,而不是
resultSet
本身。

谢谢您的回复。我尝试过这样做,在将MyResultSetTDS作为数据源表达式传递到子报表时,数据只填充在第一行中。要在其他行中填充它,我需要克隆我的数据源。无法克隆ResultSetDS。有没有别的解决办法?我不明白克隆它的必要性。您可以上传子报表的jrxml吗?在将数据源传递给子报表时,我们需要克隆它,否则当我们有一个包含多行的表时,数据将仅显示在第一行。我的子报表有一个字段,该字段显示在我的详细信息栏中