2

这似乎是一个常见问题,但我找不到有效的解决方案。

我有一个显示员工假期余额的 SSRS 报告。

我想制作一个仅显示当前用户信息的链接报告。

内置字段User!UserID,返回用户的登录名,但是在我们的 DW 中通常不使用登录名,所以我不能单独过滤掉它。我们有一个存储过程,可以将该登录名转换为匹配的UserID,然后我可以过滤报告。

我的问题是,虽然我有一个返回当前用户的辅助数据集,但EmployeeID该数据集不能用于我的主数据集的过滤器,也不能用于任何参数。

由于需要识别当前用户,我不知道在 SSMS 中执行此操作的方法,但我一直试图让它在 SSRS 中工作

为了澄清链接报告的想法,我打算有一个布尔值,其中 true/false 指示是为当前用户显示数据还是只返回所有数据。链接的报告是为了不通过这个微小的变化来复制 RDL

任何帮助将不胜感激,这是我相信我将来会再次遇到的问题

4

1 回答 1

1

如果从 TPhe 获得精神上的快速启动,我最终解决了这个问题。

需要什么:

在我的 TSQL 过程中,我创建了两个新变量。一,一个布尔值,用于切换是否过滤人员。此布尔值在超级用户和个人报告版本之间翻转。第二个是 EmpID 过滤器(以前我们只有一个自由文本名称过滤器)

如果布尔值设置为仅查看个人,则报告仅过滤到当前用户,我通过我在原始问题中提到的 SP 生成的数据集获取该用户。

关键是布尔参数。我把它命名为viewALL;对于超级用户,默认为 True。然后我创建了链接报告,并更改了参数,以便将 viewAll 设置为 False,这意味着仅显示当前用户信息。

我必须将这些参数添加到 SSRS,以便我可以Manage在 ReportServer 上报告并翻转布尔值,当然 SQL 中需要它们以在我的 where 中使用:

Where ((viewALL = 'False' AND EmployeeID = @CurrentEmployeeID) OR (viewALL = 'True' AND EmployeeName like '%+@EmployeeName+%'))

于 2015-05-26T13:49:16.663 回答