过滤SSRS报告给当前用户

时间:2015-05-22 15:11:23

标签: reporting-services parameters filter ssms-2014

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

我有一份SSRS报告,显示员工休假余额。

  

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

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

  

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

由于需要识别当前用户,我不知道在SSMS中如何做到这一点,但我一直试图让它在SSRS中工作

为了澄清链接的报告想法,我计划有一个布尔值,其中true / false表示是显示当前用户的数据还是只返回all。链接的报告是努力不通过这种微小的改变来复制RDL

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

1 个答案:

答案 0 :(得分:0)

如果从TPhe那里得到精神快速启动,我最终解决了这个问题。

需要什么:

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

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

  

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

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

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