如何根据先前的参数(动态)显示或不显示SSRS参数?

时间:2013-08-20 19:31:21

标签: dynamic reporting-services parameters

我的报告有一个参数有5个选项。我在想,如果做出了特定的选择,那另一个参数会提示用户回答其他问题/设置。这可以在SSRS 2008中完成吗?如果没有,我只会硬编码1种方式。

1 个答案:

答案 0 :(得分:1)

当然可以。您基本上将带有谓词的数据集绑定到第一个变量。

已更新

  1. 假设我声明参数'选择'。

  2. 我创建了一个名为Choices的数据集,它只是一个简单的两行返回:

    Select 'ChoiceA' as Choice
    union
    Select 'ChoiceB'
    
  3. 我返回步骤1中的参数并在左侧窗格中选择'可用值'并说“从查询中获取值”'选择我叫做的数据集' Choices'然后选择' Choice'作为价值和标签。现在,当您预览报表时,参数有一个下拉列表,有两个选项。但你想知道它是否会影响更多,它可以。

  4. 添加另一个名为' SubChoices'并使其数据集为:

     Select * 
     from (
      Select 'ChoiceA' as Choice, 'Yes' as SubChoice
      Union
      Select 'ChoiceA', 'No'
      Union
      Select 'ChoiceB', NULL
    ) as x 
    where Choice = @Choices
    order by SubChoice desc
    

    注意我正在声明一个数据集,但引用了我上面做过的变量。我刚刚为第一个数据集创建了一个依赖项。更新:我添加了一个order by子句,并将内部嵌套选择更改为更适合您的特定情况。

  5. 现在创建一个名为' SubChoices'并制定它的可用值'来自'从查询中获取值'并使用' SubChoices'作为数据集和子选择作为值和标签。更新:确保您将其设置为“允许空值”#39;一般情况下。这次设置了“默认值”'也是查询和子选择。这将做的是获取它获得的第一个并将其作为默认值弹出。因为如果我不想要ChoiceB的值,你只想要选择某些第一选择我设置了一个' NULL'在数据集中没有任何意义。因此,如果用户选择ChoiceA,他们会得到两个选项而YES应该默认,如果他们选择选择B,他们会得到一个空值,这意味着什么。

  6. 现在测试报告,你应该有一个第一个参数,下拉两个值,' ChoiceA'或者' ChoiceB'。你旁边有另一个参数变灰了。填写第一个后,第二个将显示仅显示与第一个相关联的值的值。由于我有一个where子句,第二个参数在第一个参数上是DEPENDENT,因此在第一个参数完成之前无法使用,并且只显示与第一个值相关的值。

  7. HTH,依赖值是SSRS的一个重要组成部分。