我在SSRS中创建了一个报告,其中包含两个报告参数.我想要第二个根据第一个选择来更新它的值.第一个是销售代理的列表,第二个是分销商列表.每个代理可以有很多分销商.
因此,如果报表用户选择一个代理,我只希望其经销商在列表中显示第二个参数.显然,参数值将来自查询,但是我们不知道如何在选择代理程序后重新绑定列表.
解决方法
如果您正确地订购了参数和数据集,这将自动进行
>首先,设置一个主(报告)数据集,然后设置每个参数下拉列表的数据集.对数据集中的WHERE子句进行编码,以使参数变量之间的依赖关系正确
>其次,在Report |中订购您的参数参数菜单,使您希望用户填写的第一个变量/参数位于顶部,并使第二个数据集取决于该参数.按照这个顺序通过参数;最终参数应该是实际报告数据集所依赖的参数.
>为后续参数重复
如果第二个和后续数据集中的WHERE子句具有SSRS知道的变量,从早期参数填充,这将会起作用.
作为一个例子,我有来自尊贵的pubs数据库的三个数据集(2000年的样本).
pubslist用于填充@p参数,如下所示:
select pub_id,pub_name from publishers
titleslist填充@t参数,如下所示:
select title_id,title from titles where pub_id = @p
最后,reportdataset如下所示:
select title,price,ytd_sales from titles where title_id = @t
报表|中参数的顺序报表参数菜单至关重要;因为数据集必须按照上面显示的顺序执行,而@t参数在依赖于首先设置的@p参数的数据集中,我们将@p移动到列表的顶部.
现在,SSRS评估用标签填充第一个参数的下拉列表所需的数据集.它依赖于不需要参数的数据集,因此可以立即生成.
然后,得到该参数值,它可以填充第二个参数的下拉列表.这反过来又导致了正在编写的报告.