0

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

4

1 回答 1

0

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

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

在此处输入图像描述

然后,您使用另一个过程填充 City 参数值,该过程使用 Country 参数的选定值(这会创建前向依赖关系,因此请确保 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 作为标记值,​​请不要忘记选中相关参数的“允许 Null 值”复选框。

在此处输入图像描述

于 2013-05-01T15:13:10.907 回答