1

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

在此处输入图像描述

我得到这样的结果:

在此处输入图像描述

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

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

PS我也试过

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

但是第三列中的数据显示为第一列。似乎出于某种奇怪的原因,IIF 试图解析 True 和 False 部分并且在字符串上失败 CDbl() ,但我不敢相信这是可能的,因为我之前没有见过编程语言做这样的事情。

4

1 回答 1

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。

于 2012-10-12T09:56:31.960 回答