Vb.net VS2008报告IFF失败的原因很简单

Vb.net VS2008报告IFF失败的原因很简单,vb.net,visual-studio-2008,report,Vb.net,Visual Studio 2008,Report,我在VS2008中有一个简单的报告。我有一张这样的桌子: =Code.cdbls( Sum(Code.cdblf(Fields!value.Value)), Fields!value.Value, InScope("matrix1_row_name") and InScope("matrix1_column_name")) 我得到的结果如下: 我已经在这个问题上浪费了两个小时。此外,我的同事也没有发现任何错误。我100%确定我的表格上没有格式。字段值中的结果以字符串

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

=Code.cdbls(
    Sum(Code.cdblf(Fields!value.Value)), 
    Fields!value.Value, 
    InScope("matrix1_row_name") and InScope("matrix1_column_name"))
我得到的结果如下:

我已经在这个问题上浪费了两个小时。此外,我的同事也没有发现任何错误。我100%确定我的表格上没有格式。字段值中的结果以字符串形式出现

在最后一列的代码中我做错了什么

另外,我也试过了

=IIF(IsNumeric(Fields!value.Value), Fields!value.Value, Fields!value.Value)
但第三列中的数据显示与第一列相同。
似乎出于某种奇怪的原因,IIF试图解析字符串上的真假部分和失败的CDbl,但我不敢相信这是可能的,因为我以前从未见过编程语言做过类似的事情。

在我的帖子上发表评论后,我通过编写这两个函数想出了一个解决方案。这两个字段都用于显示数据和克服不可编辑的总字段的愚蠢

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。

我不敢相信这是可能的,因为我以前从未见过一种编程语言做过这样的事情。-如果你观察到IIF是一个函数,而不是一个语句,这有助于理解你所看到的吗?因为它是一个函数,它会计算它的所有参数…@AakashM噢,上帝。。。既然你这么说。。。是否有任何可能的方法来解决此问题?使用正常的If?如果是数字字段!value.value=True,然后是字段!值。其他值字段!价值,价值终结If@ChristianSauer它说如果一个无法识别的标识符:你能做什么取决于你使用的是什么报告引擎——如果你用一个合适的标签把它编辑成问题,你可能会找到知道它的人。