选择Case语句,检查NULL和/或空字符串

时间:2017-02-27 14:39:40

标签: null crystal-reports

我正在使用Crystal Reports 2016.我有一个带有select case语句的公式,我希望其中一个案例检查null;我的数据有4个条件,其中一个是null。但是,要彻底,我还要检查空字符串""。我试过在最后留下一个catchall语句,但是没有检测到null。我已经尝试了isNullis isNull,并且收到了有关错误数据类型(预期数量)的错误,或者我需要一个比较运算符。

这就是我想要做的事情:

select ({CRV_RoomAttributeValues.ScaledAnalogValue})
  case IsNull: "No Connection"
  case 0: "Offline"
  case 1: "Partially Online"
  case 2: "Online"
  default: "No connection";

这是我现在的代码:

select ({CRV_RoomAttributeValues.ScaledAnalogValue})
  case is IsNull({CRV_RoomAttributeValues.ScaledAnalogValue}): "No Connection"
  case 0: "Offline"
  case 1: "Partially Online"
  case 2: "Online"
  default: "No connection";

由于Crystal Reports的特性,我已经看到网上有几个人建议首先测试null

如何在案例陈述中测试null

2 个答案:

答案 0 :(得分:1)

select语句执行直接比较,因此每个case语句的值必须始终与select变量/ field的数据类型相同。 IsNullboolean,因此,只有{CRV_RoomAttributeValues.ScaledAnalogValue}boolean类型时,您尝试执行的操作才有效。 我认为最简单的方法(有许多方法,但在我看来它们都很奇怪,所以我不会在这里包括它们)来实现你的目标是在开始时明确地进行null值检查像这样:

If(Isnull({CRV_RoomAttributeValues.ScaledAnalogValue})) Then
   "No Connection"
Else 
    Select {CRV_RoomAttributeValues.ScaledAnalogValue}
       case 0: "Offline"
       case 1: "Partially Online"
       case 2: "Online"
       default: "No connection";
中的

答案 1 :(得分:0)

我做了以下事情:

select ({CRV_RoomAttributeValues.ScaledAnalogValue})
  case 0: "Offline"
  case 1: "Partially Online"
  case 2: "Online"
  default: "No connection";