Vb.net VS2008报告IFF失败的原因很简单
我在VS2008中有一个简单的报告。我有一张这样的桌子: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%确定我的表格上没有格式。字段值中的结果以字符串
=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它说如果一个无法识别的标识符:你能做什么取决于你使用的是什么报告引擎——如果你用一个合适的标签把它编辑成问题,你可能会找到知道它的人。