SSRS动态添加列

SSRS dynamic addition of columns

我有一个员工列表,其中包含 emp id、姓名、职位、年龄和薪水。我需要更改列以使用参数从报告中显示。仅包含选定的列。如何使用 SSRS 实现它?

为了弄清楚这一点,您希望根据运行报告的人员隐藏一列(可能是薪水)。涉及几个组件,

  1. 找出谁是 运行 报告(可选)

如果您使用的是域身份验证,或者用户已登录到 SSRS 门户,则可以使用 UserID 的内置字段来识别用户,将其分配给要级联到数据集的参数以确定他们是否可以查看工资。因此,您右键单击参数单击添加,将其命名为登录,将参数可见性设置为内部,将可用值保留为 none,将默认值设置为

=User!UserID

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

  1. 查明他们是否有权查看工资(可选)

现在我们有了用户 ID,我们将其输入数据集,在此之前您应该创建一个 table 来列出用户 ID,以及他们是否可以看到薪水。创建一个名为 SalaryVisibleToUser

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

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

  1. 完成级联,and/or设置工资可见性参数。

所以现在我们有一个数据集告诉我们用户是否可以看到薪水,接下来我们创建一个名为 SalariesVisible 的参数,如果要级联,则将其设置为内部,如果要传递,则将其设置为隐藏.将可用值保留为 none,并设置默认值以从查询中获取值,select 数据集 SalaryVisibleToUser,然后 select CanSeeSalaries 作为值列。

  1. 根据 SalariesVisible 参数设置列可见性。

右键单击 BIDS/SSDT 中的列单击列可见性,单击基于表达式显示或隐藏,然后单击 X 按钮的 F。然后将表达式设置为

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

这似乎有点倒退,但你告诉它 false 隐藏(即:可见)或 true 隐藏(即:隐藏)。差不多就这些了,祝你好运!