使过滤器参数可选

时间:2012-12-14 01:29:15

标签: reporting-services reportingservices-2005

我正在使用SSRS 2005.我创建了一个名为icVar的报告参数。我该怎么做才能允许这个过滤器是可选的。意思是如果用户在文本框中输入内容,将根据输入的内容显示结果,但如果没有输入任何内容,则只会将其视为全部显示。这是我的数据集中的查询。

SELECT PASS_M, ENTRY_DT, EXIT_DT, WORKED_HRS, ACCESS_LOCATION_X, IC_N, COMPANY_M,  
CONSECUTIVE_D
FROM TEMP_TARGET
WHERE (CONSECUTIVE_D >= @consecDays) AND (ENTRY_DT BETWEEN @startDate AND @endDate) AND
(ACCESS_LOCATION_X LIKE @accessVar) AND
(IC_N LIKE @icVAr) 

我正在使用我的icVar的通配符%。因此,如果用户输入S123用于该过滤器,则报告将显示结果,其中IC_N值以S123开始...但是当没有为该过滤器输入任何内容时,不要强制用户输入任何内容。如果没有输入,它将显示IC_N Like%(表示全部)。

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

只需使用表达式评估短路 - 首先测试Null,并且只有当它不是Null时,表达式的下一部分才会评估,测试LIKE(参见最后一行的条件):

SELECT PASS_M, ENTRY_DT, EXIT_DT, WORKED_HRS, ACCESS_LOCATION_X, IC_N, COMPANY_M, CONSECUTIVE_D
FROM TEMP_TARGET
WHERE (CONSECUTIVE_D >= @consecDays) 
AND (ENTRY_DT BETWEEN @startDate AND @endDate) 
AND (ACCESS_LOCATION_X LIKE @accessVar) 
AND ((@icVar IS NULL) OR (IC_N LIKE @icVAr))