1

VS2008に簡単なレポートがあります。私はこのようなテーブルを持っています:

ここに画像の説明を入力してください

結果は次のようになります。

ここに画像の説明を入力してください

私はすでにこの問題の前に座って2時間を無駄にしました。さらに、私の同僚もこれに間違いは見られませんでした。私はテーブルにフォーマットがないことを100%確信しています。フィールドの結果は文字列として提供されます。

最後の列のコードで何が間違っていますか?

PS私も試しました

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

ただし、3番目の列のデータは最初の列と同じように表示されます。奇妙な理由で、IIFはTrueとFalseの両方の部分を解析しようとしていて、文字列のCDbl()に失敗しているようですが、プログラミング言語がこのようなことをしているのを見たことがないので、これが可能だとは信じられません。

4

1 に答える 1

0

私の投稿へのコメントの後、私はこれら2つの関数を書くことで解決策を思いつきました。これら2つは両方とも、データを表示し、編集できない合計フィールドの愚かさを克服するために使用されました。

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 に答える