Moi*_*oiz 2 reporting-services ssrs-2008-r2
我正在 SSRS 中创建报告。我的数据集查询返回多个输出,我将它们显示在报告中的每一行新记录中。
这是查询。现在我想检查返回值是否为数字。这是我的表达。
=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value,
Fields!ScalarValue.Value, "myResponse"), Constants.VbCrLf)
Run Code Online (Sandbox Code Playgroud)
我试过在 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
Run Code Online (Sandbox Code Playgroud)
并更改您的表达式以使用此新FormattedString函数:
=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value,
Code.FormattedString(Fields!ScalarValue.Value), "myResponse"), Constants.VbCrLf)
Run Code Online (Sandbox Code Playgroud)
我针对以下数据进行了测试:

具有上述表达式的简单表看起来符合要求:

因此,它适用于混合数据 - 您可以根据需要更改自定义代码中的格式逻辑。