SSRS 报告 - 一次执行一个多值参数

SSRS Report - Multi Valued Parameters Executed One at a Time

我是 SSRS 的新手,我想知道如何针对不同的参数集多次执行 SSRS 报告,结果将在一个文档中。

例如,如果有一个控件 table 列出区域经理、商店和个别员工,例如:

RM |店铺 |员工

RM1 |商店 1 |员工 1
RM1 |商店 2 |员工 2
RM1 |商店 2 |员工 3
RM1 |商店 2 |员工 4
RM2 |店铺 X |员工 5
RM2 |店铺 X |员工 6
RM2 |店铺 Y |员工 7
RM2 |店铺 Y |员工 8

我希望用户能够 select 单个区域经理,并且该区域经理下的所有员工的报告 运行。目前可以为单个员工执行报告,我们可以通过编程方式分别为每个员工调用报告,但这会为每个员工生成一个文档,我们希望区域主管的所有结果都在不同页面上的单个文档中.

欢迎使用 Whosebug!

想要你想做的事很简单。您已有显示单个员工的报告,我们可以将其用作子报告。

让我们假设您当前的单一员工报告名为 SingleEmpReport 并且它采用单个参数 empID。让我们暂时离开这个,因为这就是我们所需要的..

现在您需要创建一个新报告作为主报告,并循环遍及您的员工。

所以..

  • 创建一个新报告说,ManagerReport
  • 创建一个名为 pManager 的新参数(我们稍后会回来改进它,但现在只创建参数就足够了)
  • 创建一个名为 dsEmployees 的新数据集。将数据集查询设置为

    SELECT DISTINCT EmployeeID FROM myControlTable WHERE ManagerID = @pManager ORDER BY EmployeeName

注意:参数名称区分大小写。它的拼写必须与您的报告参数完全相同,并以 @ 符号开头

  • 接下来,将一个 tablix 添加到您的报告正文中,一个 List 就可以了,因为我们只需要一列和一行,但是 table 也可以。

  • 使列表与您的报告正文一样宽,高度无关紧要,请保持默认高度。

  • 将 list/tablix 的数据集 属性 设置为 dsEmployees
  • 在列表中唯一的'cell',右击插入一个子报表

  • 右键单击子报表占位符并将子报表 属性 设置为 SingleEmpReport 或任何您原来的单一员工报表的名称。

  • 在参数选项卡上,添加一个新参数,单击左侧下拉菜单并选择您的 empID 参数(这是您在原始报告中定义的参数,因此请从你的原始报告。)

  • 在右侧的下拉菜单中,选择 EmployeeID。这是我们创建的数据集中的列,其中包含 selected 经理的员工列表。由于 list/tablix 绑定到 dsEmployees 数据集,我们可以从中选择任何字段传递给我们的子报表。

我是凭记忆做的,但我认为基本上就是这样。 运行 ManagerReport,输入经理 ID(RM1 等),您应该得到每个员工的子报告。

如果您想在每个员工之间添加分页符,select list/tablix 并查看屏幕底部的行组面板。您可能会看到一个 'details' 组。右键单击它,选择 'group properties',然后单击分页符并选择 'between each group'。

您还可以通过提供经理的下拉列表来改善这一点。

为此只需添加一个新数据集,例如 dsManagers,将查询设置为

`SELECT DISTINCT RM 
    FROM myControlTable 
    ORDER BY RM`

现在右键单击您的报告参数 (pManager) 并将其可用值设置为查询,然后选择您的数据集。将值设置为您希望 dsEmployees 数据集查询使用的任何值,将标签设置为您希望用户看到的任何值。

您现在应该有一个经理下拉列表。

希望我没有遗漏任何重要内容(这里已经过了午夜),您将能够完成这些步骤。

祝你好运!

如果您的报告仅包含一个 table/matrix,您可以添加一个额外的行组,按员工分组,在组之间使用分页符。

如果您的报表设计包含更多元素,您可以将这些元素放在一个列表中,然后按员工(也有分页符)对列表进行分组。