我在1个水晶报告中有2个数据库时遇到问题。
我找到了这篇文章并使用了这篇文章: http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-dynamic-login.htm
如果只使用1个数据库,实际上工作,但我需要连接到其他数据库以获取一些信息,我发现它不起作用..
我对代码进行了一些修改,它是这样的:
ReportDocument crReportDocument = new ReportDocument();
Sections crSections;
ReportDocument crSubreportDocument;
SubreportObject crSubreportObject;
ReportObjects crReportObjects;
ConnectionInfo crConnectionInfo;
//ConnectionInfo crConnectionInfo1;
Database crDatabase;
Tables crTables;
TableLogOnInfo crTableLogOnInfo;
crReportDocument.Load(HttpContext.Current.Server.MapPath("~/Reports/" + filename));
crDatabase = crReportDocument.Database;
crTables = crDatabase.Tables;
string connectString = ConfigurationManager.ConnectionStrings["connTranscript"].ConnectionString;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);
crConnectionInfo = new ConnectionInfo();
crConnectionInfo.ServerName = builder.DataSource;
crConnectionInfo.DatabaseName = builder.InitialCatalog;
crConnectionInfo.UserID = builder.UserID;
crConnectionInfo.Password = builder.Password;
foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables)
{
crTableLogOnInfo = aTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
aTable.ApplyLogOnInfo(crTableLogOnInfo);
}
crSections = crReportDocument.ReportDefinition.Sections;
foreach (CrystalDecisions.CrystalReports.Engine.Section crSection in crSections)
{
crReportObjects = crSection.ReportObjects;
foreach (ReportObject crReportObject in crReportObjects)
{
if (crReportObject.Kind == ReportObjectKind.SubreportObject)
{
crSubreportObject = (SubreportObject)crReportObject;
crSubreportDocument = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName);
crDatabase = crSubreportDocument.Database;
crTables = crDatabase.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables)
{
crTableLogOnInfo = aTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
aTable.ApplyLogOnInfo(crTableLogOnInfo);
}
}
}
}
crReportDocument.VerifyDatabase();
这是我的第一个数据库的连接,但是如何连接到其他数据库..
以下是我的水晶报告的图像:
image
来自其他数据库,详细信息来自其他数据库。
如何解决这个问题?
任何建议表示赞赏。非常感谢你。