我有大约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
当我的程序逻辑检测到“全部”作为项目的参数时,它不会过滤任何项目并将完整列表发送到报告。
我对此设置存在一些问题
那么,是否有一种简单的方法可以允许从该项目列表中多选项目(在合理范围内,即10个最大值,这将使我保持URL错误),禁用(全选)选项,并移动我的自定义“全部”列表顶部的选项在其位置?
答案 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