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

D.R*_*.R. 5 reporting-services ssrs-2008 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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,所有工作订单都有一个工作订单编号 (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)
Run Code Online (Sandbox Code Playgroud)

但正如您可能知道的那样,Fields!WONUM.Value IN ("SPECIAL","OTHER")这不是执行此操作的有效方法!完成这项工作的最佳方法是什么?由于其他原因,我无法在 SQL 查询中以任何其他方式标记它,因此它必须在表中完成。

预先感谢您的任何和所有帮助!

小智 5

试试这个,(使用 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)
Run Code Online (Sandbox Code Playgroud)


Chr*_*tta 3

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

A 栏:

=IIF((Fields!WONUM.Value <> "SPECIAL") AND (Fields!WONUM.Value <> "OTHER"), Fields!Hours.Value, 0)
Run Code Online (Sandbox Code Playgroud)

B 栏:

=IIF((Fields!WONUM.Value = "SPECIAL") OR (Fields!WONUM.Value = "OTHER"), Fields!Hours.Value, 0)
Run Code Online (Sandbox Code Playgroud)

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