如何将 Crystal 报告连接到多个数据库

本文关键字:数据库 连接 报告 Crystal | 更新日期: 2023-09-27 18:31:54

我有一个带有下拉菜单的网页。在下拉列表中有一个来自服务器的数据库列表。选择下拉文档编号后,将显示文档编号,我们可以单击并生成水晶报告。

我的问题是我在水晶报告中给出了一个数据库的数据源。假设我选择其他数据库。如何连接到多个数据库的报表?

任何意见将不胜感激。

如何将 Crystal 报告连接到多个数据库

您使用的是CR designer还是Visual Studio来制作报告?因为字段资源管理器窗口中有一个连接部分。通常,不建议连接到多个数据库。即使您对报表使用 2 个或更多存储过程,如果它们没有公用键,您的生活也会变得复杂。

以下是我们使用的,它应该适合您。基本上,您必须确保对于报表访问的每个表(或命令,或视图等),都设置了连接。我不知道仅在主报表上设置它的方法。

// create a ReportDocument
using (ReportDocument reportDoc = new ReportDocument())
{
    reportDoc.Load(path); // path to your .rpt file
    // get the connection string you want to use
    SqlConnectionStringBuilder conInfo = new SqlConnectionStringBuilder("<your connection string>");
    Tables crTables = reportDoc.Database.Tables;
    int tablecounter = 0;
    foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
    {
        CrystalDecisions.Shared.TableLogOnInfo logonInfo = crTable.LogOnInfo;
        logonInfo.ConnectionInfo = new ConnectionInfo()
        {
            DatabaseName = conInfo.InitialCatalog,
            ServerName = conInfo.DataSource
        };
        if (conInfo.IntegratedSecurity)
        {
            logonInfo.ConnectionInfo.IntegratedSecurity = true;
        }
        else
        {
            logonInfo.ConnectionInfo.UserID = conInfo.UserID;
            logonInfo.ConnectionInfo.Password = conInfo.Password;
        }
        crTable.ApplyLogOnInfo(logonInfo);
    }
}