【问题标题】:How to check If value is numeric In SSRS如何在SSRS中检查值是否为数字
【发布时间】:2013-05-06 11:27:00
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: reporting-services ssrs-2008-r2


    【解决方案1】:

    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)
    

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

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

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

    【讨论】:

    • 非常感谢。:) 这就像一个魅力。我非常感谢你的帮助。
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多