Hay indicios de la respuesta a esta pregunta aquí y allá en este sitio, pero estoy haciendo una pregunta ligeramente diferente.Fórmula de Crystal Reports: IsNull + Iif
¿Dónde documenta Crystal Reports que esta sintaxis no funciona?
Trim({PatientProfile.First}) + " "
+ Trim(Iif(
IsNull({PatientProfile.Middle})
, Trim({PatientProfile.Middle}) + " "
, " "
)
)
+ Trim({PatientProfile.Last})
Sé que la solución es
If IsNull({PatientProfile.Middle}) Then
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Last})
Else
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Middle})
+ " " + Trim({PatientProfile.Last})
pero ¿cómo se supone que vamos a averiguar que no podemos usar la primera versión?
La documentación para EsNulo dice
- evalúa el campo especificado en el registro actual y devuelve verdadero si el campo contiene un valor nulo
y Iif da
- [devoluciones ] truePart si la expresión es True y falsePart si la expresión es False. El tipo del valor devuelto es el mismo que el tipo de truePart y falsePart.
supongo que si usted mira fijamente esa línea de "tipo del valor de retorno" lo puede conseguir, pero ...
no tengo CRXI práctica de hoy, pero lo que no funciona sobre el primero? ¿Acaso el espaciado es incorrecto (que es un error lógico en el código? ¿Tiene un Trim() adicional allí) o falla de alguna otra manera? – Stobor
Para registros donde .Middle es NULL, CR no puede evaluar el valor de cadena en Trim (.Middle), y decide que el valor de Iif es NULL, aunque tengo esa prueba explícita allí. – SarekOfVulcan