2011-11-30 95 views
2

我不知道是什麼線程把這個,請指示我到正確的一個,如果這一個不是它。iReport子報告

我在iReport的分報告中掙扎。

我有一個報告,從MSSQL數據庫中進行選擇,並使用子報告從MySQL數據庫中進行選擇。我已經成功地做到了這一點(從MySQL報告選擇,從MSSQL中選擇子報告),但這樣做的方式讓我難住。

這就是我目前的做法: 主要報告(只是子報告標籤,讓我知道是否需要發佈有關主報告的更多信息,我替換了一些變量,我的工作需要我於):

<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> 

錯誤我收到:

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... 

請讓我知道如果我需要提供更多的信息,請和,如果你知道我做錯了什麼,幫助我出去了。這已經讓我耽擱了2天。

+0

請發表子報表的代碼段 –

回答

1

看着它試圖使用MSSQL服務器jdbc驅動程序的異常。您確定您首先註冊了MySQL JDBC驅動程序嗎?也許當你的應用程序啓動,或執行試運行前:

Class.forName("com.mysql.jdbc.Driver"); 

除此之外,你可以調用報告之前在你的應用程序的連接,並通過他們作爲一個參數,你可以使用一個主報告和第二份報告可以通過您的子報告。