根据其他参数值,动态更改SSRS参数中的默认值。

时间:2017-10-05 19:58:26

标签: sql sql-server reporting-services sql-server-2016

我有user-type的报告。用户类型,地区,区域和办公室。我有以下要求。 1.当ManagerRegion, District and office时,用户必须选择user-type下拉列表。 2.当District ManagerRegion时,districtdefault下拉列表需要填充[first value from data-set]office drop-down且用户已填写选择default

因此,other parameters的{​​{1}}值需要根据user-type parameter值进行更改。我在下面尝试了Region parameter的默认属性。

=iif(parameters!usertype.value = 'DM', first(Fields!RegionName.Value ,"RegionDataset"),nothing)

它给出了以下错误..

  

字段不能用于报表参数表达式。

我们是否在SSRS中有任何变通方法可根据其他参数值设置dynamic default值?

1 个答案:

答案 0 :(得分:1)

最简单的方法是专门为您的默认值构建几个数据集,一个用于Region,另一个用于District。

例如,让我们创建一个名为dsRegionDefaults的数据集,数据集查询可能看起来像这样。 (这有点冗长,但我不知道你的数据是什么样的,这是最好的说明方式)

DECLARE @Regions TABLE (RegionID int, RegionName varchar(100))

IF @userType = 'Manager'
    BEGIN
        INSERT INTO @Regions
        SELECT RegionID, RegionName FROM myTable
    END
ELSE
    BEGIN
        INSERT INTO @Regions
        SELECT RegionID, RegionName FROM myTable
            WHERE something = somethingelse
    END
SELECT * FROM @Regions

我知道这似乎要做得更多,但设置起来非常快且易于维护,您也不必依赖数据集中可能要求的记录顺序将来的麻烦。