Elementos de informe condicionales

Puede mostrar u ocultar elementos de un informe condicionalmente mediante sentencias if. Puede utilizar la sentencia if escribiendo una expresión en el marcador de posición ${if expression} de inicio, en la que ${/} denota el final del segmento condicional. Estos son algunos ejemplos de sentencias if que puede utilizar para mostrar u ocultar partes de un informe:

  • ${if photo1} muestra la sección únicamente si la pregunta photo1 se ha respondido.
  • ${if integer1>0} muestra la sección únicamente si la respuesta a la pregunta integer1 es un número positivo.
  • ${if ((geopoint1 | getValue:"y")>0)} muestra la sección únicamente si el geopunto está en el hemisferio norte.
  • ${if multiple_choice1 | selected:"A"} muestra la sección únicamente si la pregunta con varias opciones tenía la opción A seleccionada.
  • ${if (repeat1 | getValue:"count")>=3} muestra la sección solo si repeat1 contiene tres o más registros.

En el siguiente ejemplo, el texto de la segunda línea solo aparecerá en el informe si high está seleccionado para una pregunta de selección única prioritaria:

${if priority | selected:"high"}
High priority issues must be addressed within seven days.
${/}

Para determinar si una respuesta contiene un valor para una pregunta, utilice únicamente una sentencia if que haga referencia al nombre de campo directamente sin ningún otro operador, por ejemplo, ${if photo1}. Este formato garantiza que las cadenas vacías, los valores nulos y los valores no definidos se consideren valores vacíos. Este formato se aplica a tipos de campo de cadena de caracteres, número, fecha y adjunto. Al utilizar este formato con repeticiones, la sección aparecerá siempre y cuando haya al menos una instancia en la repetición.

Para utilizar declaraciones condicionales con preguntas de fecha y hora, realice cálculos utilizando el tiempo Epoch (milisegundos transcurridos desde el 1 de enero de 1970). Por ejemplo, ${if (date1|getValue:"") < 1602735375000} muestra la sección únicamente si el valor del campo de fecha es anterior al 14 de octubre de 2020. La sintaxis del informe no tiene un equivalente a las funciones today() o now() del XLSForm, por lo que es imposible crear una declaración condicional para las horas en que se imprimió el informe.

Las sentencias if admiten los siguientes operadores lógicos:

OperadorDescripción

||

True si una de las dos sentencias devuelve el valor True

&&

True si las dos sentencias proporcionadas devuelven el valor True

!

True si la sentencia no devuelve el valor True

==

True si los dos valores proporcionados son equivalentes

!=

True si los dos valores proporcionados no son equivalentes

>

Evalúa si el primer valor es mayor que el segundo valor

>=

Evalúa si el primer valor es mayor o igual que el segundo valor

<

Evalúa si el primer valor es menor que el segundo valor

<=

Evalúa si el primer valor es menor o igual que el segundo valor

Una tabla se puede utilizar en un informe para presentar registros repetidos individuales o un resumen de registros. Para utilizar una declaración condicional para ocultar una tabla que no tiene valores, los marcadores de posición de inicio y fin deben colocarse fuera de la tabla, inmediatamente antes y después de la tabla. Para utilizar una declaración condicional para mostrar solo la fila de encabezado de la tabla cuando esta no tiene valores, el marcador de inicio debe colocarse dentro de la primera celda de la tabla y el marcador de fin debe colocarse dentro de la última celda de la tabla.