首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iReport子报表

iReport子报表
EN

Stack Overflow用户
提问于 2011-11-30 18:30:06
回答 1查看 2.7K关注 0票数 2

我不知道该放在哪个线程中,如果这个不是,请指引我到正确的线程。

我正在处理iReport里的一份子报告。

我有一个从MSSQL数据库中选择的报告,并使用子报告从MySQL数据库中进行选择。我已经成功地完成了相反的操作(报告从MySQL中选择,子报告从MSSQL中选择),但是这样做会让我感到困惑。

这就是我目前的做法:主报告(只是子报告标签,让我知道如果我需要发布更多关于主报告的信息。我替换了一些变量,我的工作需要我这样做):

代码语言:javascript
复制
<subreport>
    <reportElement x="360" y="0" width="100" height="20"/>
    <subreportParameter name="ID">
        <subreportParameterExpression><![CDATA[$F{pkiCandidateID}]]></subreportParameterExpression>
    </subreportParameter>
    <connectionExpression><![CDATA[java.sql.DriverManager.getConnection("jdbc:mysql://<ip address>:3306/<db name>","<username>","<password>")]]></connectionExpression>
    <subreportExpression class="java.lang.String"><![CDATA["repo:/Enterprise/jrxml/Candidates/report1_subreport1.jrxml"]]></subreportExpression>
</subreport>

我收到的错误:

代码语言:javascript
复制
Error filling print... 
Error executing SQL statement for : report1_subreport1 
net.sf.jasperreports.engine.JRException: 
Error executing SQL statement for : report1_subreport1
    at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:143)
    at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:684)
    at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:605)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1281)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:901)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
    at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:877)
    at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
    at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'tCandidate'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1454)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:388)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:338)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:185)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:160)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:281)
    at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:137)
    ... 11 more 
Print not filled. Try to use an EmptyDataSource...

如果我需要提供更多的信息,请让我知道,如果你知道我做错了什么,请帮助我。这已经困扰了我两天了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-12 23:11:40

查看异常,它正在尝试使用MSSQL Server jdbc驱动程序。您确定您先注册了MySQL JDBC驱动程序吗?也许当你的应用程序启动时,或者在执行try running之前:

代码语言:javascript
复制
Class.forName("com.mysql.jdbc.Driver");

除此之外,您可以在调用报表之前在应用程序中建立连接,并将它们作为参数传递,您可以将一个参数用于主报表,另一个可以传递给子报表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8324474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档