SSRS选择全部导致URL超过最大长度

时间:2013-08-19 01:39:14

标签: sql web-services reporting-services ssrs-2008

我有大约250个ID长约6-7个字符的项目。我将它们组织成3个类,每个类中有大约8个子类。使用报告时,用户可以使用级联下拉列表来过滤项目列表。但是,当报表最初加载时,用户希望所有项目都可见。

报告参数通过URL传递给将为我检索数据的Web服务。

我已将items报告参数设置为多选,但我已手动添加值“All”作为默认参数,并使用以下查询在资源列表中包含“All”作为选项:

SELECT 'All' as ItemID
UNION
SELECT itemID as ItemID
FROM (SELECT DISTINCT itemID
      FROM itemMaster
      WHERE (itemSubClass IN (@itemSubClass)) and itemClass IN (@itemClass))
      ORDER BY itemID) as derivedtbl_1

当我的程序逻辑检测到“全部”作为项目的参数时,它不会过滤任何项目并将完整列表发送到报告。

我对此设置存在一些问题

  1. “全部”选择​​显示在我的项目列表中。首先是(全选),然后是数字项,然后是“全部”,后跟字母项。
  2. (全选)项目仍会显示在列表中,因为如果用户选择该项目,它是多选参数广告,则会选择所有250个项目并收到最大网址字符错误。
  3. 那么,是否有一种简单的方法可以允许从该项目列表中多选项目(在合理范围内,即10个最大值,这将使我保持URL错误),禁用(全选)选项,并移动我的自定义“全部”列表顶部的选项在其位置?

1 个答案:

答案 0 :(得分:0)

我认为你可以摆脱所有。您需要操纵“SELECT ALL”的行为以表现得像ALL,即您的URL中没有应用过滤器。您可以采用的方法是计算数据集中的行数,并将其与参数计数选择进行比较。

类似的东西:

=iif(Parameters!ItemID.Count=CountRows("ItemIDDataset"),"ALL",JOIN(Parameters!ItemID.Value, ", "))

根据您是否删除了“全部”选项,确保进行计数比较。

以下是一些有用的文章解释了这个场景。

http://www.mssqltips.com/sqlservertip/2844/working-with-multiselect-parameters-for-ssrs-reports/

http://dataqueen.unlimitedviz.com/2011/06/how-to-default-to-all-in-an-ssrs-multi-select-parameter/

HTH