0

将 SSRS 2012 与 Visual Studio 2012 一起使用。

我有一个文本框,其表达式定义如下:

=Microsoft.VisualBasic.Interaction.IIF(First(Fields!Cost.Value, "SomeTable") Is Nothing, "", Code.GetCostAsString(First(Fields!Cost.Value, "SomeTable")))

“成本”是可以为空的十进制类型。“GetCostAsString”是这样的自定义 VB.NET:

Function GetCostAsString(val As Decimal) As String

    Dim res As Decimal = Val * 1.1D
    Return res.ToString("0.##") 

End Function

(实际上,自定义代码会比这更复杂,这就是我想使用自定义函数的原因)。

问题:是否可以将更多代码移动到函数中,以便该函数也可以处理字段值为空的情况(即VB.NET中的“Nothing”)?

例如,表达式变为:

=Code.GetCostAsString(First(Fields!Cost.Value, "SomeTable"))

功能是:

Function GetCostAsString(val As ????) As String

    ' return empty string if val is Nothing, else do other stuff with decimal value. 

End Function

我可以在“????”处输入什么类型 这样它就可以接受空值?

4

2 回答 2

4

使用Nullable(Of Decimal),像这样:

Function GetCostAsString(val As Nullable(Of Decimal)) As String
    ' return empty string if val is Nothing, else do other stuff with decimal value. 
    If val.HasValue Then
        ' Do stuff here and return decimal value
    Else
        Return String.Empty
    End If
End Function

注意:该HasValue属性相当于检查是否Decimal存在NothingFalse表示它是Nothing,因此Else返回一个空字符串。

于 2013-11-08T05:26:48.133 回答
1

您应该使用可为空的类型作为 VB.NET 代码中的参数类型,在这种情况下Nullable (Of Decimal),以匹配您的 SQL 数据类型。

于 2013-11-08T05:21:02.407 回答