c# - 如何使用 C# 为 Crystal 报表动态设置数据库名称?

标签 c# winforms crystal-reports

我有一个 C# windows 应用程序,其中有许多 Crystal 报表。我使用以下代码调用并显示它们:

rptDDCollection rpt = new rptDDCollection();
            rpt.SetDatabaseLogon(Connect.sDatabaseUserName, DLL.Connect.sDatabasePassword, "", Connect.sCurrentDatabase);
            rpt.RecordSelectionFormula = "";
            frmReports frm = new frmReports();
            frm.crViewer1.DisplayGroupTree = false;
            frm.crViewer1.ReportSource = rpt;
            frm.crViewer1.SelectionFormula = rpt.RecordSelectionFormula;                
            frm.crViewer1.Show();
            frm.Show();

现在,问题是我有 2 个数据库要处理。一个数据库可以正常工作。我必须使用相同的报告,但我经常需要从另一个数据库查看数据。数据库引擎是 SQL 服务器.在网上搜索和堆栈溢出时,我发现了通过代码动态设置数据库名称的建议。在这种情况下应该怎么做才能实现我想要的?

最佳答案

我通过为报告中的表设置数据库名称来解决这个问题。我在上面的实际代码中做了一个更改。我创建了一个名为 ApplyLogonInfo 的方法并将报告对象传递给它。在方法中我编写了代码动态设置报告表的数据库名称。这是修改后的代码:

rptDDCollection rpt = new rptDDCollection();
        rpt.SetDatabaseLogon(Connect.sDatabaseUserName, DLL.Connect.sDatabasePassword, "", Connect.sCurrentDatabase);
        ApplyLogOnInfo(rpt);     
        rpt.RecordSelectionFormula = "";  
        frmReports frm = new frmReports();
        frm.crViewer1.DisplayGroupTree = false;
        frm.crViewer1.ReportSource = rpt;
        frm.crViewer1.SelectionFormula = rpt.RecordSelectionFormula;                
        frm.crViewer1.Show();
        frm.Show();

下面是新创建的方法:

public static void ApplyLogOnInfo(ReportClass rpt)
    {
        TableLogOnInfo info = new TableLogOnInfo();
        info.ConnectionInfo.DatabaseName = Connect.sCurrentDatabase;
        for (int i = 0; i < rpt.Database.Tables.Count; i++)
        {
            rpt.Database.Tables[i].ApplyLogOnInfo(info);
        }
    }

sCurrentDatabase 是当前选择查看的数据库的名称。

这使我能够动态设置数据库名称,现在我可以使用 2 个(或通常是多个)数据库并查看我希望查看的任何数据库中的数据。

关于c# - 如何使用 C# 为 Crystal 报表动态设置数据库名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483872/

相关文章:

c# - Regex.Replace 对特殊字符失败

c# - 是否可以创建用于将项目添加到 Entity Framework dbset 的通用方法?

c# - 如何在 vb.net windows 应用程序中打印 html 页面

c# - 将多个属性组合为单个属性 - 合并属性

c# - 制作 winforms 2.0 启动画面

javascript - 如何在通过 Http 消息响应内容发送的 javascript 中显示服务器端生成的 PDF 流

visual-studio - 如何在 Visual Studio 2008 中更改 Crystal Reports 测量单位

c# - 向 XML 文件添加新行

c# - 以编程方式在 Crystal Report C# 中创建公式字段

c# - 没有输入参数的匿名函数