1

助けてください。Crystal Reports xiを使用して作成されたレポートを開くことができるswingアプリケーションを開発しています。私がやろうとしているのは、レポートを開いてそのレポートに接続情報を渡して、レポートのデータベースを動的に変更できるようにすることです。しかし、何らかの理由で機能せず、レポートは最初に設定されたデータベースからの情報を引き続き生成します。誰かが私が間違ったことを教えてもらえますか? ところで、com.crystaldecisions.sdk.occa.report.application.ReportClientDocument を使用しようとすると、サーバーが見つからないというエラーが発生します。しかし、 import com.crystaldecisions.reports.sdk.ReportClientDocument; を使用しようとすると、動いていない。レポート サーバーが何なのかよくわかりません。自分のコンピューターにレポート サーバーをセットアップしたとは思いません。助けてください。これが私のコードです:

import com.crystaldecisions.sdk.occa.report.application.ReportClientDocument;

ReportClientDocument rpt =  new ReportClientDocument();
    rpt.open(reportPath+fileName, 0);
    Fields fields = null;

    IConnectionInfo connInfo = rpt.getDatabaseController().getConnectionInfos(null).getConnectionInfo(0);

     PropertyBag innerProp = connInfo.getAttributes();
        innerProp.clear();

        PropertyBag propertyBag = new PropertyBag();
        propertyBag.put("Server Type", "JDBC (JNDI)");
        propertyBag.put("Database DLL", "crdb_jdbc.dll");
        propertyBag.put("Database Class Name", "com.mysql.jdbc.Driver");
        propertyBag.put("Use JDBC", "true");
        propertyBag.put("Server Name", DBConnect.getServer());
        propertyBag.put("Generic JDBC Driver Behavior", "No");
        propertyBag.put("URI", "!com.mysql.jdbc.Driver!jdbc:mysql://"+DBConnect.getServer()+":"+DBConnect.getPort()+"/"+DBConnect.getDatabase()+"!ServerType=29!QuoteChar=`");

        connInfo.setAttributes(innerProp);
        connInfo.setPassword(DBConnect.getPassword());
        connInfo.setUserName(DBConnect.getUsername());




    int replaceParams = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB;
    rpt.getDatabaseController().replaceConnection(rpt.getDatabaseController().getConnectionInfos(null).getConnectionInfo(0), connInfo, fields, replaceParams);
4

1 に答える 1

1

propertyBag に追加されたプロパティを使用していません。プロパティを innerProp に追加して、propertyBag.put(...) を innerProp.put(...) に置き換えるか、connInfo.setAttributes(innerProp) を connInfo.setAttributes(propertyBag) に変更する必要があります。最初のアプローチを提案します。

于 2012-05-21T10:31:55.263 に答える