CRに関する経験がある方にこの質問をお寄せください。Crystalレポートと接続に関する問題
Crystalレポートへの接続に問題があります。 私は顧客からの報告を受け取りました。データベースの構造は自分のサーバと私のサーバで同じです。しかし、サーバーとdbの名前は異なります。 彼はレポートを作成するために "コマンド"を使用しています(データベースフィールド - >データベースエキスパートのコマンドを追加)。このコマンドには、データを返す関数があります。 私のコンピュータでこのレポートを実行しようとすると、TestConnectivity()を実行しようとすると問題が発生します。このメソッドはfalseを返します。 私はデバッグしようとし、ApplyLogOnInfo()内部オブジェクトRasTableを適用した後、古いConnectionInfoが見つかりました。
私は、設定された接続のために、次のコードを使用しています:
private void ApplyConnection(ReportDocument report, ConnectionInfo connectionInfo)
{
ApplyLogOnInfo(report, connectionInfo);
ApplyLogOnInfoForSubreports(report, connectionInfo);
}
private void ApplyLogOnInfo(ReportDocument reportDocument, ConnectionInfo connectionInfo)
{
foreach (Table table in reportDocument.Database.Tables)
{
table.LogOnInfo.ConnectionInfo.AllowCustomConnection = true;
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
_log.InfoFormat("Table connection state: TableName = {0}, IsConnect = {1}", table.Name, table.TestConnectivity());
}
}
private void ApplyLogOnInfoForSubreports(ReportDocument reportDocument, ConnectionInfo connectionInfo)
{
Sections sections = reportDocument.ReportDefinition.Sections;
foreach (Section section in sections)
{
ReportObjects reportObjects = section.ReportObjects;
foreach (ReportObject reportObject in reportObjects)
{
_log.InfoFormat("Type = {0}, Name = {1}",reportObject.Name, reportObject.Kind);
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
var subreportObject = (SubreportObject)reportObject;
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
ApplyLogOnInfo(subReportDocument, connectionInfo);
}
}
}
}
だから私の質問は以下のとおりです。
- 私はコマンドへの権利の接続を設定するにはどうすればよいですか?
- なぜ私は接続を変更できませんか? (レポートが他のサーバー上に作成された場合)。