2013-12-12 12 views
2

在SSRS 2005中,我试图设置一个表达式来返回true或false,这取决于一个ReportItem的值在报告运行时,用户从列表中选择(可能为多个)值的列表。SSRS 2005:如何编写IIF语句来检查值是否在参数列表中

这里的表情至今:

=iif(Trim(ReportItems!Category_2.Value) = Trim(Parameters!Category.Value(0)), False, True) 

你可以看到真假的表达被逆转 - 这是因为它控制该行的“隐藏”属性,我想不隐藏值在列表中的行。

当为参数选择单个值时,该表达式可以正常工作,但对于多个值,它仅显示第一个结果。

希望你能帮上忙。

+1

在您的表达式中,Trim(Parameters!Category.Value(0)是在多值参数中传递的第一个参数,请尝试使用Join()函数或LookupSet来获取所有参数。 – ShellNinja

回答

0

使用

=iif(Trim(ReportItems!Category_2.Value) = Trim(Parameters!Category.Value), False, True) 
0

您的帮助非常感谢尝试。这些多个值真的让我感到困扰,而且我从来没有设法让Trim正常工作,所以我最终使用了以下两阶段解决方案,而不是:

(1)在SQL'SELECT'语句中,我定义了一个名为“InCategory”新值,分配给它的根据是否所述类别1或0的值是输入分类中的一个或不:

CASE WHEN Category IN (@Category) THEN 1 ELSE 0 END AS 'InCategory', 

(2)然后在SSRS,我的表达为“隐藏'在报告中变得简单,如果该行的'InCategory'的总和为0,则隐藏该行:

=iif((Sum(Fields!InCategory.Value) = 0), True, False) 

再次感谢您的帮助 - 我非常感谢,并将再次使用本网站。