gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:35 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com