2013-05-06 46 views
2

我正在SSRS中创建报告。我的数据集查询返回给我多个输出,并在每个新行新记录中的报告中显示它们。如何检查值是否为数字在SSRS

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

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

我试图在IIF(isnumeric ...)上工作,但是它返回了多个结果,它不允许我格式化。如果输出是数字,我想格式化这两个2位小数。

回答

3

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

简单的ta BLE上述表达式看起来需要:

enter image description here

所以它的工作对我来说对数据的混合 - 您可以根据需要更改自定义代码格式化逻辑。

+1

非常感谢:)这就像一个魅力..我真的很感谢你的帮助。 – Moiz 2013-05-07 05:52:25

+0

不客气,很高兴帮助。 – 2013-05-07 10:59:03