我正在使用Crystal Reports 2016.我有一个带有select case
语句的公式,我希望其中一个案例检查null
;我的数据有4个条件,其中一个是null
。但是,要彻底,我还要检查空字符串""
。我试过在最后留下一个catchall语句,但是没有检测到null
。我已经尝试了isNull
和is 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
?
答案 0 :(得分:1)
select
语句执行直接比较,因此每个case语句的值必须始终与select变量/ field的数据类型相同。 IsNull
为boolean
,因此,只有{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";