VS2008报告IFF在简单条件下失败

时间:2012-10-11 14:15:42

标签: vb.net visual-studio-2008 report

我在VS2008中有一个简单的报告。我有一张像这样的表:

enter image description here

我得到的结果如下:

enter image description here

我已经浪费了2个小时坐在这个问题面前。此外,我的同事也没有看到任何错误。我百分百肯定我桌子上没有格式化。字段 value 中的结果以字符串形式出现。

我在上一栏的代码中做错了什么?

P.S。我也试过

=IIF(IsNumeric(Fields!value.Value), Fields!value.Value, Fields!value.Value)

然后第三列中的数据显示在第一列中。 似乎有些奇怪的原因,IIF试图解析True和False部分以及字符串上的CDbl()失败,但我无法相信这是可能的,因为我之前没有看到过这样的编程语言。

1 个答案:

答案 0 :(得分:0)

在我的帖子发表评论之后,我通过编写这两个函数找到了解决方案。这两个都用于显示数据并克服不可编辑的总场的愚蠢。

Public Function cdblf(ByVal s As Object) As Object
    If (IsNumeric(s)) Then
        Return CDbl(s)
    Else : Return Nothing
    End If
End Function

Public Function cdbls(ByVal n As Object, ByVal s As Object, ByVal b As Boolean) As Object
    If (IsNumeric(n)) Then
        Return CDbl(n)
    Else : 
        If(Not IsNothing(s)) Then
            If(b) Then
                Return CStr(Left(CStr(s), Len(CStr(s)) - 1))
            Else : Return Nothing
            End If
        Else : Return Nothing
        End If
    End If
End Function

这些功能的组合应该是这样的:

=Code.cdbls(
    Sum(Code.cdblf(Fields!value.Value)), 
    Fields!value.Value, 
    InScope("matrix1_row_name") and InScope("matrix1_column_name"))

这解决了我不想对字符串值求和的事实,也不再需要使用IIF了。