检查字段值是否在SSRS报告中的字符串列表中

时间:2012-06-27 20:45:06

标签: ssrs-2008 reporting-services ssrs-tablix

我正在使用SSRS(VS2008)并创建工单的报告。在报告表的详细信息行中,我有以下列(包含一些虚假数据)

WONUM  |  A  |  B  | Hours
ABC123 |  3  |  0  |   3
SPECIAL|  0  |  6  |   6
DEF456 |  5  |  0  |   5
GHI789 |  4  |  0  |   4
OTHER  |  0  |  2  |   2

您可以看到,所有工单都有工单号(WONUM)以及总小时数(HOURS)。我需要根据WONUM将小时数放入A列或B列。我有一个特定命名的工作单的列表(在这个例子中,它们将是“SPECIAL”和“OTHER”),它们会将HOURS值放在B列中。如果WONUM不是特殊命名的,那么它列A列。这是我想要作为A列和B列的表达式:

Column A: =IIF(Fields!WONUM.Value IN ("SPECIAL","OTHER"), 0, Fields!Hours.Value)
Column B: =IIF(Fields!WONUM.Value IN ("SPECIAL","OTHER"), Fields!Hours.Value, 0)

但是你可能知道,Fields!WONUM.Value IN ("SPECIAL","OTHER")不是一个有效的方法!使这项工作的最佳方法是什么?我不能出于其他原因以任何其他方式在SQL查询中标记它,因此必须在表中完成。

提前感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:3)

试试这个,(使用InStr()函数)

IIF(InStr(Fields!WONUM.Value,"SPECIAL")>0 OR InStr(Fields!WONUM.Value,"OTHER")>0, 0, Fields!Hours.Value)

IIF(InStr(Fields!WONUM.Value,"SPECIAL")>0 OR InStr(Fields!WONUM.Value,"OTHER")>0, Fields!Hours.Value,0)

答案 1 :(得分:2)

如果它只是两个WONUM,那么你可以这样做:

A栏:

=IIF((Fields!WONUM.Value <> "SPECIAL") AND (Fields!WONUM.Value <> "OTHER"), Fields!Hours.Value, 0)

B栏:

=IIF((Fields!WONUM.Value = "SPECIAL") OR (Fields!WONUM.Value = "OTHER"), Fields!Hours.Value, 0)

或在每列中使用相同的公式以保持一致性,并在结尾处交换字段/ 0。