助けてください。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);