我有一个有下拉列表的网页。在下拉列表中,有一个来自服务器的数据库列表。在选择下拉文档时,会显示数字,我们可以单击并生成水晶报告。
我的问题是我在水晶报告中为一个数据库提供了数据源。假设我选择了其他数据库。如何连接到多个数据库的报告?
非常感谢任何投入。
答案 0 :(得分:0)
您是否使用CR设计器或Visual Studio来制作报告?因为在字段资源管理器窗口中有一个连接部分。通常,不建议连接到多个DB。即使您为报告使用了2个或更多存储过程,如果他们没有共用密钥,也会使您的生活变得复杂。
答案 1 :(得分:0)
以下是我们使用的,它应该适合您。基本上,您必须确保对于报表访问的每个表(或命令或视图等),都会设置连接。我不知道只在主报告上设置它的方法。
// 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);
}
}