Я не уверен, в какую нить это вставить, пожалуйста, направьте меня к правильному, если этот не тот.
Я борюсь с подотчетом в 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 дня.