1

サブレポートを呼び出すサブレポートがありますsybase stored procedure.。サブレポートは ireport と jasper の両方で個別に正常に動作します。サブレポートをメイン レポートで使用してiReportで実行すると、問題なく動作します。JasperReportsで同じレポートを実行すると問題が発生します。次のエラーが表示されます。

Error Message com.sybase.jdbc3.jdbc.SybSQLException: SET CHAINED command not allowed within multi-statement transaction. .

私はグーグルで検索しましたが、私の問題の解決策はどこにも見つかりませんでした。私のサブレポートは要約バンドにあります。JasperReports Server 4を使用しています

以下は、完全なエラー トレースです。

java:901) net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) で net.sf.jasperreports.engine.fill.JFillSubreport.fillSubreport(JFillSubreport.java:609) で net.sf .jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:205) ... 1 つ以上原因: com.sybase. jdbc3.jdbc.SybSQLException: SET CHAINED コマンドはマルチステートメント トランザクション内では許可されていません。com.sybase.jdbc3.tds.Tds.a (ソース不明) com.sybase.jdbc3.tds.Tds.nextResult (ソース不明) com.sybase.jdbc3.jdbc.ResultGetter.nextResult (ソース不明) com .sybase.jdbc3.jdbc.SybStatement.nextResult(不明なソース) com.sybase.jdbc3.jdbc.SybStatement.nextResult(不明なソース) com.sybase.jdbc3.jdbc. jdbc3.jdbc.SybSQLException: SET CHAINED コマンドはマルチステートメント トランザクション内では許可されていません。com.sybase.jdbc3.tds.Tds.a (ソース不明) com.sybase.jdbc3.tds.Tds.nextResult (ソース不明) com.sybase.jdbc3.jdbc.ResultGetter.nextResult (ソース不明) com .sybase.jdbc3.jdbc.SybStatement.nextResult (不明なソース) com.sybase.jdbc3.jdbc.SybStatement.nextResult (不明なソース) com.sybase.jdbc3.jdbc.SybStatement.queryLoop (不明なソース) com.sybase .jdbc3.jdbc.SybStatement.executeQuery(不明なソース) com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(不明なソース) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) ネットで。 sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:137) ... 10 以上のエラー メッセージ com.sybase.jdbc3.jdbc.SybSQLException: SET CHAINED command not allowed within multi-statement transaction. エラー トレース com.sybase.jdbc3.jdbc.SybSQLException: SET CHAINED コマンドは複数ステートメントのトランザクション内では許可されていません。com.sybase.jdbc3.tds.Tds.a (ソース不明) com.sybase.jdbc3.tds.Tds.nextResult (ソース不明) com.sybase.jdbc3.jdbc.ResultGetter.nextResult (ソース不明) com .sybase.jdbc3.jdbc.SybStatement.nextResult (不明なソース) com.sybase.jdbc3.jdbc.SybStatement.nextResult (不明なソース) com.sybase.jdbc3.jdbc.SybStatement.queryLoop (不明なソース) com.sybase .jdbc3.jdbc.SybStatement.executeQuery(不明なソース) com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(不明なソース) org.apache.commons.dbcp.DelegatingPreparedStatement.

どんな助けでも大歓迎です。

4

2 に答える 2

0

データソースを JNDI に変更したところ、完全に機能しました。

于 2013-10-22T10:33:27.093 に答える
0

エラー 'SET CHAINED command not allowed within multi-statement transaction' は、連鎖オプションの設定中に開かれた sybase トランザクションを示しています。したがって、これらの Set chained mode コマンドを使用している間は、トランザクションが開かれていないことを確認してください。

tranasaction を確認するには、@@trancount を使用します。0 より大きい場合は、トランザクションをロールバックまたはコミットし、set コマンドのみを使用します。

于 2013-10-23T11:25:27.707 に答える