SSRS文本框中显示空值或空值

时间:2010-08-09 16:56:23

标签: ssrs-2008 reporting-services

使用SSRS(2008)找到处理null或空值的最佳方法是什么,并将其替换为显示的其他值。非常明显的解决方案是

=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value)

虽然它很繁琐,但我的希望是在文本框上找到类似EmptyText属性的内容但是没什么。有任何想法吗?我应该从创建此属性的TextBox基础创建自定义报表项吗?

9 个答案:

答案 0 :(得分:8)

=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))

使用此表达式,您可以得到答案。

此处CStr是处理String数据类型的默认函数。

答案 1 :(得分:6)

调用自定义函数?

http://msdn.microsoft.com/en-us/library/ms155798.aspx

您可以随时在其中放置案例stmt来处理不同类型的“空白”数据

答案 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),"")