【发布时间】:2011-02-01 15:05:31
【问题描述】:
这个问题给有 CR 经验的人。
我在设置与 Crystal 报表的连接时遇到问题。 我收到了客户的报告。数据库的结构在他和我的服务器上是相同的。但是 server 和 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);
}
}
}
}
所以我的问题是:
- 如何设置与 Command 的正确连接?
- 为什么我不能更改连接? (如果报告是在其他服务器上创建的)。
【问题讨论】:
标签: c# crystal-reports