Crystal报表9中的动态登录参数,具有2个不同的数据库

时间:2014-12-02 07:34:43

标签: c# asp.net database crystal-reports

我在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();

这是我的第一个数据库的连接,但是如何连接到其他数据库..

以下是我的水晶报告的图像:

enter image description here

image来自其他数据库,详细信息来自其他数据库。

如何解决这个问题?

任何建议表示赞赏。非常感谢你。

0 个答案:

没有答案