Reporting services 动态添加列

Reporting services 动态添加列,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我有一份有emp id、姓名、职务、年龄和薪水的员工名单。我需要更改列以使用参数从报告中显示。仅包含选定的列。我如何使用SSRS实现它?为了弄清楚这一点,您需要隐藏一个基于谁运行报告的列(可能是薪水)。涉及到一些组件 确定谁在运行报告(可选) 如果您正在使用域身份验证,或者用户已登录到SSRS门户,则可以使用用户ID的内置字段来标识用户,将其分配给要级联到数据集的参数,以确定他们是否可以查看工资。因此,右键单击参数单击添加,将其命名为登录,将参数可见性设置为内部,将可用值保留为无,将默认值设置为

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

为了弄清楚这一点,您需要隐藏一个基于谁运行报告的列(可能是薪水)。涉及到一些组件

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

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

  • 了解他们是否有查看工资的权限(可选)
  • 现在我们有了用户ID,我们将其输入到一个数据集中,在此之前,您应该创建一个表,列出用户ID,以及他们是否可以看到工资。创建一个名为SalaryVisibleToUser的数据集

    Select isnull(CanSeeSalaries, 0) as CanSeeSalaries 
    From YourReportDB.DBO.ReportUserPermissions
    where userid = @Login
    
    如果您希望报表在未将用户添加到该表时崩溃,那么可以删除isnull,但我更希望通过权限而不是错误来执行访问限制,YMMV

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

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

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

    这似乎有点倒退,但您告诉它隐藏为假(即:可见)或隐藏为真(即:隐藏)。这就够了,祝你好运

    你的意思是添加一个可以用来隐藏列的参数吗?你的答案是级联参数。我的意思是添加一个参数来隐藏列。级联参数对我不起作用