使用SSRS(2008)找到处理null或空值的最佳方法是什么,并将其替换为显示的其他值。非常明显的解决方案是
=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value)
虽然它很繁琐,但我的希望是在文本框上找到类似EmptyText属性的内容但是没什么。有任何想法吗?我应该从创建此属性的TextBox基础创建自定义报表项吗?
答案 0 :(得分:8)
=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))
使用此表达式,您可以得到答案。
此处CStr是处理String数据类型的默认函数。
答案 1 :(得分:6)
答案 2 :(得分:5)
我不同意在服务器端转换它。如果你这样做,它将作为一个字符串类型而不是一个日期类型返回所有需要的东西(例如它将排序为一个字符串)
我处理日期时的原则是尽可能将它们输入日期。
如果您在报表服务器上遇到性能瓶颈,则有更好的方法来处理它而不是破坏您的逻辑。
答案 3 :(得分:2)
虽然可能没有比你的解决方案更好,你可以调整你的T-SQL以使用COALESCE返回相同的结果:
SELECT MyField = COALESCE(table.MyField, " NA")
NA之前的额外空间的推理是允许排序将NA结果置于顶部。由于您的数据可能会有所不同,这可能不是一个很好的选择。
答案 4 :(得分:1)
试试这个
=IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value)
答案 5 :(得分:0)
我同意在SQL端执行替换,但使用ISNULL函数将是我的方式。
SELECT ISNULL(table.MyField, "NA") AS MyField
我通常在SQL服务器上执行尽可能多的数据处理,并尝试尽可能少地在SSRS中进行数据操作。这主要是因为我的SQL服务器比我的SSRS服务器强大得多。
答案 6 :(得分:0)
在SQL或报告代码中(根据adolf garlic的功能建议)
此时此刻,我会在报告中这样做。我很少报告繁忙的OLTP服务器和不受欢迎的报表服务器。如果我有不同的混合,我会在SQL中做。
无论哪种方式都可以接受......
答案 7 :(得分:0)
我无法让IsNothing()
表现出来并且我不想在我的dataset
中创建虚拟行(例如,对于给定的客户列表,每月显示一个虚拟订单)并注意到空值显示为-247192。
看到使用它可以抑制它(至少在MSFT从08R2改变SSRS之前),所以原谅我,但是:
=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)
答案 8 :(得分:-2)
我有类似的情况,但以下对我来说效果最好..
=Iif(Fields!Sales_Diff.Value)>1,Fields!Sales_Diff.Value),"")