SSRS动态添加列

时间:2015-04-10 09:36:25

标签: reporting-services ssrs-2008-r2

我有一份员工名单,包括员工,姓名,名称,年龄和薪水。我需要使用参数更改要从报告中显示的列。仅包含选定的列。如何使用SSRS实现它?

1 个答案:

答案 0 :(得分:1)

为了实现这一目标,您希望根据运行报告的人隐藏列(可能是薪水)。涉及的内容很少,

  1. 确定谁在运行报告(可选)
  2. 如果您正在使用域身份验证,或者用户已登录SSRS门户,则可以使用UserID的内置字段来标识用户,将其分配给要级联到数据集的参数以确定如果他们能看到工资。因此,您右键单击参数单击添加,将其命名为Login,将参数可见性设置为internal,将可用值保留为none,将默认值设置为

    =User!UserID
    

    此步骤是可选的,因为您可以显示即将推出的可见性参数,而不是根据用户级联它,具体取决于您调用报告的方式,这可能是您的最佳选择。但是,如果您正在进行级联,登录必须是这些类型的级联的第一个参数或报告将崩溃,您可以通过单击参数并单击该参数在SSDT或BIDS中将其移动在向上箭头上。

    1. 确定他们是否有权查看工资(可选)
    2. 现在我们有了用户ID,我们将其提供给数据集,在此之前,您应该创建一个列出用户ID的表,以及他们是否可以看到工资。创建一个名为SalaryVisibleToUser

      的数据集
      Select isnull(CanSeeSalaries, 0) as CanSeeSalaries 
      From YourReportDB.DBO.ReportUserPermissions
      where userid = @Login
      

      如果您希望在没有将用户添加到该表的情况下希望报告崩溃,则可以删除isnull但我更喜欢通过权限而不是错误YMMV来完成访问限制。

      1. 完成级联,和/或设置薪资可见性参数。
      2. 所以现在我们有一个数据集告诉我们用户是否可以看到工资,接下来我们创建一个名为SalariesVisible的参数,如果你要级联它将其设置为内部,或者如果要传递它则隐藏。将可用值保留为none,并设置默认值以从查询中获取值,选择数据集SalaryVisibleToUser,然后选择CanSeeSalaries作为值列。

        1. 根据SalariesVisible参数设置列可见性。
        2. 右键单击BIDS / SSDT中的列,单击列可见性,单击显示或隐藏基于表达式,然后单击F按钮。然后将表达式设置为

          =Iif(Parameters!SalariesVisible = 1, False, True)
          

          这看起来有点倒退,但你告诉它隐藏(即:可见)或真实隐藏(即:隐藏)。关于它,祝你好运!