【问题标题】:VB if statement issue in SQL SSRSSQL SSRS 中的 VB if 语句问题
【发布时间】:2015-04-20 13:44:46
【问题描述】:

我正在运行带有 SSRS 的 SQL Server 2008 R2。

我在一个简单的 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)

如果需要更多信息,请告诉我。

【问题讨论】:

  • 是否有理由必须在 expressio 中使用自定义 vb 脚本而不是 iif 或 switch 语句?
  • 您的代码和您的问题似乎也不同。在您的问题中,您引用了红色橙色和绿色,而在您的代码中,您使用的是绿色白色和红色。你能确认哪个是正确的,因为这可能是你的问题,因为你引用了 2 号来返回白色而不是橙色。
  • @SFrejofsky 你能推荐一个 iif 或 switch 语句,你会推荐我试试吗?我希望 2 号是橙色的,我在里面放了白色,因为我正在尝试不同的颜色来让它发挥作用。

标签: sql-server vb.net reporting-services


【解决方案1】:

这是一个 switch 语句,它比使用自定义代码要简单得多。 Switch 语句在处理更复杂的 if else 逻辑时非常有用,并且可以让您更轻松地组织结果。它也不会让您在一堆自定义代码中搜索以找到需要更改时需要工作的表达式。

您需要在文本框属性中输入“填充”表达式。

=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

使用此开关产生了以下结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多