Reporting services 使过滤器参数可选

Reporting services 使过滤器参数可选,reporting-services,reportingservices-2005,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 (CONSECU

我正在使用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%(表示全部)


感谢您的帮助。谢谢。

只需使用表达式求值短路-首先测试Null,并且只有当它不为Null时,表达式的下一部分才会求值,测试类似于(请参见最后一行的条件):


谢谢你的回复,但是你能给我看一下整个where语句吗?如果我想说如果icVar为null,那么它就是where,类似“%”,否则类似icVar。我认为你的建议有点类似,但我不知道如何测试你的解决方案,并且IC_N没有空值。我已经更新了答案,以包含完整的SQL-基本上你只在参数不为空时测试IC_N谢谢,它可以工作。谢谢你的解决方案,我迫切需要你的解决方案,而且你的解决方案能按时完成。你介意看看你能不能帮我解决这个问题吗。你也许能帮上忙。[链接]我正在为自己的项目使用类似的解决方案。这是否违背了SSRS报告过滤器的目的,因为它需要另一个查询而不是重用数据集?它不需要另一个数据集,此SQL用于主数据集。我认为OP没有使用共享数据集或SSRS报告过滤器,因此您可以使用SQL来完成选择数据的繁重工作,而不是在报告级别对其进行过滤。
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))