Reporting services 如何检查SSRS中的值是否为数字

Reporting services 如何检查SSRS中的值是否为数字,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我正在SSRS中创建一个报告。我的数据集查询返回多个输出,我在报告中的每一行新记录中显示它们 这是问题所在。现在我想检查返回值是否为数字。这是我的表情 =Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value, Fields!ScalarValue.Value, "myResponse"), Constants.VbCrLf) 我尝试使用IIF(isnumeric…),但由于它返回多个结果,因此不允许格式化。如果输出是数

我正在SSRS中创建一个报告。我的数据集查询返回多个输出,我在报告中的每一行新记录中显示它们

这是问题所在。现在我想检查返回值是否为数字。这是我的表情

=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value, 
Fields!ScalarValue.Value, "myResponse"), Constants.VbCrLf)

我尝试使用IIF(isnumeric…),但由于它返回多个结果,因此不允许格式化。如果输出是数字的,我想格式化两个2十进制。

IsNumeric
在这里很有用,但是
IIf
的问题是它没有短路,因此如果您在转换数据,可能会出错

例如,如果使用
CDec
允许对字符串应用数字格式,则它将在所有情况下应用,并在字符串不是数字时引发错误

一种安全的方法是创建一个简单的自定义代码函数来处理格式化,并在LookupSet表达式中使用它

=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value, 
Fields!ScalarValue.Value, "myResponse"), Constants.VbCrLf)
因此,请向报告中添加一些自定义代码,如:

Public Function FormattedString(ByVal st as String) as String

    If IsNumeric(st)

      Return Format(CDec(st), "N2")

    End If

  Return st

End Function
并将表达式更改为使用此新的
FormattedString
函数:

=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value, 
Code.FormattedString(Fields!ScalarValue.Value), "myResponse"), Constants.VbCrLf)
我根据以下数据进行了测试:

具有上述表达式的简单表如所需:

因此,这对我来说是针对混合数据的——您可以根据需要更改自定义代码中的格式逻辑。

非常感谢。:)这非常有效。。我真的很感谢你的帮助。