如何在RDL报告中显示两个数据库的数据?

发布于 2024-08-01 12:41:06 字数 242 浏览 8 评论 0原文

我正在创建一个报告,该报告将从一个数据库(每个公司的公司和客户列表)获取一些数据,并从其他数据库(每个客户的项目列表)连接到它的一些数据。 看起来显示的数据只能使用一个DataSource,而一个DataSource就是一个数据库的连接。 我做了一些谷歌搜索并阅读了有关子报告的信息,我尝试了这个解决方案,但报告看起来不一样(例如,我有公司、客户和项目列,子报告在其中,子报告包含两列,我不喜欢它们显示在一列中...)。 子报表真的是显示跨数据库数据的唯一方法吗?

I'm creating a report that will take some data from one database (Company and list of Customer for every Company) and some data connected to it from other database (list of Item for every Customer). It seems that displayed data can only use one DataSource and that a DataSource is a connection to one database. I did some googling and read about subreports and I tried this solution but the report doesn't look the same (for example I have columns Company, Customer and Item, where the subreport is, and subreport contains two columns and I wouldn't like them to be displayed in one column...). Are subreports really only way to display cross-databases data?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黎歌 2024-08-08 12:41:06

是的,单个报表控件(表格、列表等)只能显示一个数据集中的数据。 不过,您确实有几个选择。

如果多个数据库位于同一服务器上或者一台服务器链接到另一台服务器,则您可以从单个数据集中引用多个数据库。 例如,如果您在同一服务器上有两个数据库(公司、客户数据),那么


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 将两个数据库中的表提取到一个公共数据库中,或者安排在夜间或白天定期运行。

Yes a single report control (table, list etc) can only display data from one dataset. You do have a couple of options though.

You can reference multiple databases from a single dataset if they are on the same server or if one server is linked to the other. For example if you have both databases (company, customerdata) on the same server then


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

If the databases are of different servers but are linked then you can refer to the tables using servername.databasename.schema.tablename instead. In both cases you need to make sure the login you're using has appropriate permissions on both sides.

Alternatively you could use SSIS to pull the tables from both databases into a common database prior to running the report perhaps scheduling to run overnight or periodically during the day.

别忘他 2024-08-08 12:41:06

我已经使用 rdlc 中的子报告做了类似的事情。 我不确定是否可以在 rdl 中完成,但在 rdlc 中,每个子报告实际上都是带有自己的数据源的报告。
此致,
约丹

i have done somethin like this using subreports in rdlc. I am not shure if it is possible to be done in rdl but in rdlc every subreport is actualy report with it's own DataSource.
Best Regards,
Iordan

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文