我正在 SSRS 中创建报告。我的数据集查询返回多个输出,并在报告中的每个新行新记录中显示它们。
这是查询。现在我想检查返回值是否是数字。这是我的表情。
=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value,
Fields!ScalarValue.Value, "myResponse"), Constants.VbCrLf)
我尝试使用 IIF(isnumeric ... ) 但由于它返回多个结果,它不允许我格式化。如果输出是数字,我想格式化两个 2 小数。
最佳答案
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)
我测试了以下数据:
包含上述表达式的简单表格看起来符合要求:
因此,它对我来说适用于混合数据 - 您可以根据需要更改自定义代码中的格式逻辑。
关于reporting-services - 如何在 SSRS 中检查值是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397787/