SSRS:包含两个数据源的主详细报告

Svi*_*ish 8 c# objectdatasource report reporting-services

我有两个本地数据源可以推送到报告中.没问题.但是如何设置报告呢?一个数据源包含员工列表以及有关这些员工的信息.另一个包含每个员工的一堆工作时间.

我想在员工列表中使用一个表格,然后在每个员工的工作时间内(另外还有工作时间表).

这甚至可能吗?我必须使用子报告吗?我是否必须将它们合并为一个数据源?= /

Aar*_*ieb 5

据我所知,不使用子报表就不可能将一个数据集嵌套在另一个数据集中.

这意味着您需要做以下两件事之一:

  1. 将两个数据源重构为一个数据源.例如,在员工和每个员工的工作时间之间执行联接.然后,您可以使用Table对象的分组属性以您希望的方式格式化列表.

  2. 如果加入这两个数据源不可行,则可以使用子报表来完成所需的操作.创建包含工作时间数据源的子报表,并为当前员工提供参数.按此参数过滤工作时间.

    在父报表中,可以将子报表放在列表中,并将当前行的员工ID作为参数传递.

    请注意,使用子报表涉及一些格式化怪癖.在大多数情况下,我已经能够解决它们,但首选的方法绝对是上面的第一.


Aar*_*ieb 5

添加新答案以确保为其发送通知.

使用子报表是最简单的方法.您只需将子报表拖放到表格单元格上,它就会填充该单元格的内容区域.右键单击子报表将允许您编辑子报表的参数.与SSRS中的大多数值一样,参数可以设置为使用表中字段的表达式.

在子报表中,只过滤结果以仅显示与作为参数传入的员工关联的记录.

您可以采用的另一种方法是使用连接合并两个数据源.这将为您提供如下数据:

employee1 time1.1
employee1 time1.2
employee1 time1.3
employee1 time1.4
employee2 time2.1
employee2 time2.2
employee2 time2.3
Run Code Online (Sandbox Code Playgroud)

然后,您可以在重复列(本示例中为employee)上创建一个组,并在这些列上启用HideDuplicates属性.结果将如下所示:

employee1 time1.1
          time1.2
          time1.3
          time1.4
employee2 time2.1
          time2.2
          time2.3
Run Code Online (Sandbox Code Playgroud)