2015-04-20 54 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