2015-04-20 51 views
0

我運行SQL Server 2008 R2與SSRS。VB如果SQL語句SSRS問題

我有嵌入在一個簡單的SSRS報告中的一些VB代碼。我在SSRS報告中的列細節返回的值是由0,2或3值2似乎也變成綠色每次...

我的VB代碼是存在於細胞剛剛變爲紅色,橙色或綠色取決於單元格中的數字。它的工作原理爲0和3而不是數2一些任意原因....

我的代碼如下:

Public Shared Function GetColor(ByVal value as Int32) As String 
    If value = 0 Then 
    return 「Green" 
    ElseIf value = 2 Then 
    return "White" 
    Else 
    return "Red" 
    End IF 
End Function 

我然後使用針對小區的背景顏色的表達式引用此。用下面的代碼:

=Code.GetColor(Fields!status.Value) 

請讓我知道是否需要額外的信息。

+1

是否有您必須使用自定義的VB腳本,而不是在expressio的IIF或switch語句中原因是什麼? – SFrejofsky

+2

你的代碼和你的問題似乎也不一樣。在你的問題中,你引用了紅色的橙色和綠色,並且在你的代碼中使用了綠色的白色和紅色。你能否確認哪一個是正確的,因爲這可能是你的問題,因爲你有第2個引用返回白色而不是橙色。 – SFrejofsky

+0

@SFrejofsky你可以建議,你會建議我嘗試的IIF或switch語句?我希望數字2是橙色的,我把白色放在那裏,因爲我嘗試了不同的顏色來嘗試讓它起作用。 – scryptor1

回答

1

這裏是一個switch語句是簡單得多然後使用自定義代碼。在處理更復雜的邏輯時,Switch語句非常有用,並且可以讓您更輕鬆地組織結果。它也不會讓你通過一堆自定義代碼來查找需要改變的表達式,這些表達式需要改變。

你需要把這個在文本框屬性中的「填充」的表達。

=switch(fields!status.Value = 0, "green", 
fields!status.Value = 2, "orange", 
fields!status.Value = 3, "red") 

我用下面的數據集來測試這個。

SELECT  0 AS Expr1, 'green' AS Expr2 
UNION ALL 
SELECT  2 AS Expr1, 'orange' AS Expr2 
UNION ALL 
SELECT  3 AS Expr1, 'red' AS Expr2 

使用此開關產生了以下結果。

enter image description here

+0

非常感謝您的幫助!這工作! :) – scryptor1