在 SSRS 2005 中,我有一个表,其中有一个数据集链接到它。
我想检查一个字段的值是否为空,如果它不为空然后格式化数据以确保它有一个小数位并添加一个 % 符号等。
这是我在字段/列上的表达:
=iif(IsNothing(Fields!COL01.Value), "" ,Format(CDbl(Trim(Replace(Fields!COL01.Value, "%", ""))), "N1") + "%")
当数据为空时它似乎不起作用(如果有数据它工作正常)。报告显示,但该字段显示为#ERROR。
我认为它会检查两种情况是否有效,即使它为空。我正在尝试使用 if 语句来避免格式化空值。
最佳答案
SSRS 表达式使用 Visual Basic 进行计算,它通常对表达式中的所有操作数进行完整(即不是短路)计算,例如在 IIf(cond, truexp, falsexp) 中,除了 cond 之外,truexp 和 falsexp 都会被评估,并且无论 cond 的值如何都可能抛出。
由于 VB.NET 2.0 中似乎没有合并函数,您可能希望在报告的代码部分添加一个,例如从 Oracle 返回的十进制
Function Coalesce(fieldValue As Object, defaultValue As Decimal) As Decimal
If IsDBNull(fieldValue) OrElse IsNothing(fieldValue) Then
Coalesce = defaultValue
Else
Coalesce = CDec(fieldValue)
End If
End Function
也可以定义通用函数,例如合并(TResult)。
关于sql-server-2005 - SQL 2005 Reporting Services 如果检查 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835954/