根据参数选择更新报告参数?(SSRS)

Jon*_*ees 11 sql-server-2005 reporting-services

我在SSRS中创建了一个包含两个报告参数的报告.我希望第二个根据第一个选择更新它的值.第一个是销售代理商列表,第二个是分销商列表.每个代理商可以有许多经销商.

因此,如果报告用户选择代理,我只希望他们的分销商在列表中显示第二个参数.显然,参数值将来自查询,但我不知道如何在选择代理后重新绑定列表.

Jer*_*yth 13

如果您正确地订购参数和数据集,这将自动运行

  • 首先,设置主(报告)数据集,然后设置每个参数下拉列表的数据集.WHERE对数据集中的子句进行编码,以使参数变量之间的依赖关系正确
  • 其次,在Report |中订购参数 参数菜单,以便您希望用户填写的第一个变量/参数位于顶部,并使第二个数据集依赖于该参数.通过参数遵循此顺序; 最终参数应该是实际报告数据集所依赖的参数.
  • 重复后续参数

如果WHERE第二个和后续数据集中的子句具有SSRS知道的变量从早期参数填充,则此方法将起作用.

例如,我有来自古老pubs数据库的三个数据集(2000年的样本).

pubslist 用于填充@p参数,如下所示:

 select pub_id, pub_name from publishers
Run Code Online (Sandbox Code Playgroud)

titleslist 填充@t参数,如下所示:

 select title_id, title from titles where pub_id = @p
Run Code Online (Sandbox Code Playgroud)

最后,reportdataset看起来像这样:

 select title, price, ytd_sales from titles where title_id = @t
Run Code Online (Sandbox Code Playgroud)

Report | Report Parameters菜单中参数的顺序至关重要; 因为必须按照上面显示的顺序执行数据集,并且@t参数位于依赖于首先设置的@p参数的数据集中,我们将@p移动到列表的顶部.

现在,SSRS评估使用标签填充第一个参数下拉列表所需的数据集.它依赖于不需要参数的数据集,因此可以立即生成.

然后,获得该参数值后,它可以填充第二个参数的下拉列表.这反过来会导致生成报告.