0

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

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

我已将项目报告参数设置为多选,但我已手动添加值“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 个项目都被选中,并且我收到最大 URL 字符错误。

那么,有没有一种简单的方法可以允许从该项目列表中多选项目(在最大的原因 10 内,这将使我处于 URL 错误之下),禁用(全选)选项,并将我的自定义“全部”选项移动到在它的位置列表的顶部?

4

1 回答 1

0

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

就像是:

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

确保在进行计数比较时根据您是否删除了“ALL”选项。

这里有一些有用的文章解释了这种情况。

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/

高温高压

于 2013-08-20T06:43:20.870 回答