2012-06-27 53 views
3

我正在使用SSRS(VS2008)並創建工作訂單報告。在報告表的詳細信息行,我有以下的列(有一些假數據)檢查字段值是否在SSRS報告中的字符串列表中

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),以及作爲一個整體小時數(小時)。我需要根據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查詢中將其標記,因此必須在表中完成。

在此先感謝您的幫助!

+0

如果它只是你試圖篩選出兩個WONUMs,沒有任何理由,爲什麼你不能只在使用OR IIf聲明? – thyme

回答

2

如果它只是兩個WONUMs那麼你可以這樣做:

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。

+0

如果你有2個以上會發生什麼?沒有「IN」等價物? – PeterX

+0

有些事情你可以做,例如使用'IndexOf',這取決於你的要求。如果你有一個特定的問題,你應該把它作爲一個新問題,我們可以在那裏處理它。 –

+0

我將我的邏輯移至SQL IN語句以幫助簡化SSRS邏輯。 – PeterX

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) 
+0

感謝您的選擇。我在報告中使用了Chris Latta的回答。 –

相關問題