带输入参数的可选参数,怎么做?

时间:2013-04-29 10:35:11

标签: ssrs-2008 reporting-services

我有一个输入参数和两个多值参数。我将两个多值参数设置为可选。有没有办法在不选择两个多值参数的情况下从报表中获得输入结果? 我试过这个,但它不起作用:Link

1 个答案:

答案 0 :(得分:0)

因此,考虑到国家,我会尝试做一个快速的例子。我意识到这不是一个多值的param解决方案,但它可以满足您的需求。在RDL中,您将定义两个参数,一个用于Country,另一个用于City或其他。然后,您可以从存储过程填充country参数,并使用Name作为显示文本,并使用ID作为值。 (如果将默认值设置为null,则All将是所选的第一个项目)

 SELECT C.Name, C.ID From Countries AS C
 UNION
 SELECT 'All', NULL

enter image description here

然后,使用另一个使用所选国家/地区参数值的过程填充City参数值(这会创建一个前向依赖项,因此请确保Country在参数列表中显示在City之前,否则在构建时会出错那个报告)。

 DECLARE @Country_ID int
 SELECT C.Name, C.ID FROM Cities AS C 
 WHERE (C.Country_ID = @Country_ID)
 UNION
 SELECT 'All', NULL

现在,您的程序将返回报告的结果集,同时接受公司和城市ID参数,并在您的where子句中,您将具有以下内容:

 DECLARE @Country Int,
         @City Int

 SELECT * FROM X
 WHERE  (X.Country_ID = @Country_ID OR @Country_ID IS NULL) AND
        (X.City_ID = @City_ID OR @City IS NULL)

显然,您需要更改一下以适合您的查询,但这应该允许用户只选择一个国家/地区,一个国家/地区和一个城市,或者根本不选择。

PS。如果您打算使用null作为您的标记值,请不要忘记检查相关参数的“允许空值”复选框。

enter image description here