代码之家  ›  专栏  ›  技术社区  ›  keithwarren7

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

  •  18
  • keithwarren7  · 技术社区  · 15 年前

    使用ssrs(2008)您发现处理空值或空值并用其他显示内容替换它们的最佳方法是什么。很明显的解决办法是

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

    虽然这很乏味,但我希望能在文本框中找到类似于EmptyText属性的内容,但遗憾的是什么都没有。有什么想法吗?我应该从创建此属性的文本框基创建自定义报表项吗?

    9 回复  |  直到 15 年前
        1
  •  6
  •   adolf garlic    15 年前

    调用自定义函数?

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

    您可以在其中放置case stmt来处理不同类型的“空白”数据。

        2
  •  8
  •   huzeyfe koriander    10 年前
    =IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))
    

    用这个表达式你可以得到答案。

    这里cstr是处理字符串数据类型的默认函数。

        3
  •  5
  •   FunkyDexter    14 年前

    我不同意在服务器端转换它。如果您这样做,它将返回为字符串类型,而不是包含所有必需内容的日期类型(例如,它将作为字符串排序)

    在处理日期时,我的原则是尽可能长时间地将它们作为日期输入。

    如果您在报表服务器上面临性能瓶颈,那么有更好的方法来处理它,而不是牺牲逻辑。

        4
  •  2
  •   Aaron D    15 年前

    虽然可能没有比您的解决方案更好的解决方案,但您可以调整您的T-SQL以使用coalesce返回相同的结果:

    SELECT MyField = COALESCE(table.MyField, " NA")
    

    NA之前的额外空间的理由是允许排序将NA结果放在顶部。因为您的数据可能会有所不同,所以这可能不是一个很好的选择。

        5
  •  1
  •   Akxaya    9 年前

    试试这个

    =IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value)
    
        6
  •  0
  •   Ryan    15 年前

    我同意在SQL端执行替换,但使用isNull函数将是我的选择。

    SELECT ISNULL(table.MyField, "NA") AS MyField
    

    我通常在我们的SQL服务器上处理尽可能多的数据,并尽量减少SSR中的数据操作。这主要是因为我的SQL服务器比我的SSRS服务器强大得多。

        7
  •  0
  •   gbn    15 年前

    在SQL或报表代码中(根据Adolf大蒜的函数建议)

    在这个时候,我会在报告中这样做。对于一个繁忙的OLTP服务器和一个不起眼的报告服务器,我几乎没有报告。如果我有不同的组合,我会在SQL中进行。

    任何一种方式都是可以接受的…

        8
  •  0
  •   McCee    13 年前

    我不能得到 IsNothing() 我不想在 dataset (例如,对于给定的客户列表,每月创建一个显示的虚拟订单),并注意到空值显示为-247192。

    你瞧,用它来抑制它(至少在MSFT将SSR从08R2改为更好之前),所以请原谅我,但是:

    =iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)
    
        9
  •  -2
  •   nhahtdh Pankaj Wadhwa    12 年前

    我也遇到过类似的情况,但以下几点对我最有效。

    =Iif(Fields!Sales_Diff.Value)>1,Fields!Sales_Diff.Value),"")
    
    推荐文章