如何检查如果值是数字在SSRS中

时间:2013-05-06 11:27:00

标签: reporting-services ssrs-2008-r2

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

这是查询。现在我想检查值返回是否为数字。这是我的表达。

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

我尝试使用IIF(isnumeric ...),但因为它返回了多个结果,它不允许我格式化。如果输出是数字,我想格式化那两个2小数。

1 个答案:

答案 0 :(得分:4)

IsNumeric在这里非常有用,但IIf的问题在于它不会短路,因此如果您正在投放数据,可能会遇到错误。

例如,如果使用CDec允许将数字格式应用于字符串,则会在所有情况下应用它,并在字符串不是数字时抛出错误。

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

因此,请在报告中添加一些自定义代码,例如:

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)

我针对以下数据进行了测试:

enter image description here

带有上述表达式的简单表格看起来是必需的:

enter image description here

因此,它可以帮助我处理混合数据 - 您可以根据需要更改自定义代码中的格式化逻辑。