Seleccione a instrução do caso, verifique se o texto é nulo e/ou vazio
Estou a trabalhar com os relatórios Crystal de 2016. Eu tenho uma fórmula com uma declaração
select case
, e eu gostaria que um desses casos verificasse para null
; meus dados têm 4 Condições, e um deles é null
. No entanto, para ser minucioso, eu também gostaria de verificar para uma string vazia ""
. Eu tentei deixar uma declaração de catchall no final, mas isso não detecta null
. Eu tentei isNull
e is isNull
, e obter um erro sobre o tipo de dados errado (número esperado) ou que eu preciso de uma comparação operador.
Isto é o que estou a tentar fazer.
select ({CRV_RoomAttributeValues.ScaledAnalogValue})
case IsNull: "No Connection"
case 0: "Offline"
case 1: "Partially Online"
case 2: "Online"
default: "No connection";
Este é o código que tenho agora.
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";
Eu vi várias pessoas na net recomendarem testes para {[[3]} Primeiro, por causa das idiossincrasias dos Relatórios de Cristal.
Como faço o teste para null
numa declaração de caso?
0
Author: YetAnotherRandomUser, 2017-02-27
2 answers
A instrução select
executa comparações directas, por isso os valores de cada instrução de caso devem sempre ter o mesmo tipo de dados com a sua variável/campo seleccionado. O IsNull
é boolean
, por isso o que está a tentar fazer só funcionaria se o seu {CRV_RoomAttributeValues.ScaledAnalogValue}
fosse do tipo boolean
.
Eu acho que a maneira mais fácil (há muitas maneiras, mas na minha opinião eles são todos estranhos, então eu não vou incluí-los aqui) para alcançar o seu objetivo é fazer a verificação de valor null
explicitamente no início assim:
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";
Em Sintaxe Cristalina
1
Author: jambonick, 2017-05-17 01:37:05
Acabei por fazer o seguinte:
select ({CRV_RoomAttributeValues.ScaledAnalogValue})
case 0: "Offline"
case 1: "Partially Online"
case 2: "Online"
default: "No connection";
0
Author: YetAnotherRandomUser, 2017-05-16 18:01:33