相互依赖的参数

时间:2018-11-28 19:51:09

标签: reporting-services ssrs-2008-r2 ssrs-tablix

如果更改了另一个参数下拉值,是否可以更改一个参数下拉值?

例如,您有两个参数:

  1. 下拉YEAR(存储过程中填充的int值:2016、2017、2018)

  2. 下拉TYPES(存储过程中的产品文本值列表)

我们可以选择YEAR 2018,它将在TYPES中显示特定值。然后选择其他年份并显示DEFAULT值吗?这两个参数都在调用存储过程。

短内: 想法是选择年份,只在与该YEAR产品类型相关的TYPE参数中显示。

1 个答案:

答案 0 :(得分:1)

您可以这样做,但有一些警告。

日期选择器不能很好地工作,但是如果您仅选择数字9作为年份,那应该没问题。

如果您选择一年以上(例如,选择2018年,然后改变主意,然后选择2017年),则默认的默认值可能未设置为期望值。

基本上,您只需要制作秒数数据集,就取决于第一个参数的值。我不知道您的数据是什么样子,但假设您有一个大型数据集,并且每条记录都有Year,Type和一些更详细的列。

假设您要选择年份,然后从s中存在该年份的类型列表中进行选择。我不会介绍最终的数据集,因为它不属于您的问题..

因此,假设第一个存储的proc做类似

CREATE PROC GetYears AS
SELECT DISTINCT [year] FROM myTable ORDER BY [Year]`

创建一个名为dsYears的数据集,并将其指向该存储的过程。

在SSRS中,您将创建一个名为say @pYear的参数,并将可用值设置为指向dsYears

现在创建您的第二个存储过程,该过程接受一个年份作为参数,这样该过程将类似于

CREATE PROC GetTypes(@pYear as int) AS
SELECT DISTINCT [Type] FROM myTable WHERE [Year] = @pYear

创建一个名为dsTypes的秒数据集,并将其指向存储参数设置为@pYears参数的秒存储过程。

现在创建第二个名为@pTypes的参数,make是多值的(我假设您希望在最终报告中一次选择多个类型)。将可用的AND默认值设置为指向dsTypes

应该的。我已经从内存中完成了此操作,因此它可能并不完全正确,但希望足够接近。