我正在创建一个报告,该报告将从一个数据库(公司和每个公司的客户列表)中获取一些数据,并从其他数据库(每个客户的项目列表)中获取一些连接到它的数据。似乎显示的数据只能使用一个 DataSource,而 DataSource 是与一个数据库的连接。我做了一些谷歌搜索并阅读了有关子报表的信息,我尝试了这个解决方案,但报表看起来不一样(例如,我有列公司、客户和项目,子报表在哪里,子报表包含两列,我不喜欢它们将显示在一列中...)。子报表真的是显示跨数据库数据的唯一方法吗?
问问题
1877 次
2 回答
3
是的,单个报表控件(表格、列表等)只能显示来自一个数据集的数据。不过,您确实有几个选择。
如果它们在同一台服务器上或者如果一台服务器链接到另一台服务器,您可以从一个数据集中引用多个数据库。例如,如果您在同一台服务器上有两个数据库(公司、客户数据),那么
Select co.CompanyName, cu.CustomerName, ci.CustomerItem1
From company.dbo.Companies co
Inner Join company.dbo.Customers cu On cu.CompanyID = co.CompanyID
Inner Join customerdata.dbo.CustomerItems ci On ci.CustomerID = cu.CostomerID
如果数据库属于不同的服务器但已链接,那么您可以参考使用的表servername.databasename.schema.tablename
。在这两种情况下,您都需要确保您使用的登录名在双方都具有适当的权限。
或者,您可以在运行报告之前使用 SSIS 将表从两个数据库中提取到一个公共数据库中,或者安排在夜间运行或在白天定期运行。
于 2009-08-09T09:54:46.817 回答
0
我使用 rdlc 中的子报表做了类似的事情。我不确定是否可以在 rdl 中完成,但在 rdlc 中,每个子报告实际上都是使用自己的数据源报告的。最好的问候, 约旦
于 2009-08-09T09:29:31.470 回答