Reporting services 如何检查SSRS中的值是否为数字
我正在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…),但由于它返回多个结果,因此不允许格式化。如果输出是数
=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)
我根据以下数据进行了测试:
具有上述表达式的简单表如所需:
因此,这对我来说是针对混合数据的——您可以根据需要更改自定义代码中的格式逻辑。非常感谢。:)这非常有效。。我真的很感谢你的帮助。