Las condiciones de visualización te permiten mostrar un objeto del cuestionario según condiciones específicas.
Los objetos a los que puedes aplicar Condiciones de Visualización son:
opciones de respuesta
filas de matriz
columnas de matriz
celdas avanzadas de matriz
preguntas
grupos de preguntas
páginas
secciones
alertas personalizadas
Las condiciones pueden incluir valores como:
códigos de respuesta
valores insertados en respuestas de texto (texto, números, fechas), valoraciones y sliders
campos de contacto
Operadores lógicos #
Símbolos de comparación
Estos símbolos pueden utilizarse para comparar dos valores.
- == igual a
- != diferente de
- < menor que
- > mayor que
- <= menor o igual que
- >= mayor o igual que
Negación
El símbolo de negación invierte el resultado booleano de la condición. Debe colocarse antes de la condición.
- ! negación
Referirse a los datos #
En las Condiciones de Visualización de IdSurvey puedes referirte a distintos tipos de datos.
Código de respuesta
Al escribir el código de la pregunta como primer valor, IdSurvey lo comparará con el código de respuesta escrito después del operador.
if( Q1 != 1 )
Verifica si el código de respuesta 1 no fue seleccionado en la pregunta Q1.
Valores de respuestas abiertas, matrices, valoraciones y sliders
Al escribir el código de la pregunta entre paréntesis, IdSurvey comparará los valores ingresados en preguntas abiertas, valoraciones y sliders.
if( [Q1] <= 50 )
Verifica si el valor ingresado como respuesta en la pregunta Q1 es menor o igual a 50.
if( [Q2.1] == 80 )
Verifica si el valor ingresado en la fila 1 de la pregunta de matriz Q2 es igual a 80..
if( [Q3.2.1] != 10 )
Checks if the value inserted in the cell made by crossing of row 2 with column 1 of 3D Matrix Question Q3 is different than 10.
Valores drag&drop
Al escribir el código de la pregunta seguido del código de respuesta de una pregunta drag&drop (arrastrar y soltar), IdSurvey comparará la posición de esa respuesta en la lista.
if( Q1.1 == 1 )
Verifica si la respuesta .1 de la pregunta drag&drop Q1 está colocada en primer lugar de la lista.
if( Q1.3 != 1 )
Verifica si la respuesta .3 de la pregunta drag&drop Q1 está colocada en una posición diferente a la primera de la lista.
Valores de los campos de la base de datos de nominativos
Para referirse a un valor de la base de datos de nominativos, debes escribir el nombre del campo entre llaves.
if( {gender} == m )
Verifica si el campo «Gender» de cada nominativo está completado con el valor «m»
Si utilizas IdCode
: la condición debe comenzar con /F y la condición debe ir entre comillas. Ejemplo /F «if(Q1 != 1)»
Si utilizas el Editor de Código
: puedes escribir la condición directamente, sin /F y sin comillas. Ejemplo Q1 != 1
Notas
- Puedes referirte a un valor insertado entre paréntesis cuadrados [ ] solo en preguntas abiertas, clasificación y slider. Para este tipo de preguntas, IdSurvey registra no solo el código de respuesta sino también el valor insertado por el encuestado.
- Solo puede existir un valor por cada pregunta simple, un valor por cada fila de una matriz y un valor por cada celda de una matriz avanzada. Para más información, consulta la guía de IdSurvey o el artículo específico de la base de conocimientos.
Convenciones #
Por convención, todas las condiciones basadas en preguntas que no se muestran devuelven un resultado falso. Por ejemplo, si la pregunta Q15 no se mostró porque fue filtrada, y la condición if( Q15 != 3 ) se aplicó a la pregunta Q20, la pregunta Q20 no se mostrará incluso si la respuesta es diferente de 3.
Esta convención asegura un comportamiento más natural para la forma en que las condiciones de visualización se conciben generalmente en un cuestionario.
Puedes evitar esta convención usando el operador not (negación). Por ejemplo, si aplicas la condición if( !Q15 == 3 ) a la pregunta Q20, esta pregunta se mostrará incluso si la pregunta Q15 no se mostró. Se muestra si en la pregunta Q15 no se seleccionó la opción de respuesta 3.
Condición de visualización con “And” (&&) #
Las condiciones de visualización con el símbolo “And” muestran un elemento del cuestionario cuando todas las condiciones con este símbolo son simultáneamente verdaderas.
El símbolo para condiciones con “And” es: &&
Por ejemplo:
Establezcamos la siguiente condición de visualización en la pregunta Q4
if(Q1==2&&Q2==2&&Q3==1)
n este caso, la pregunta Q4 se mostrará solo si seleccioné la respuesta con código “2” en la pregunta Q2 y la respuesta “2” en la pregunta Q1 y la respuesta “1” en la pregunta Q3.
Si al menos una de esas condiciones no es verdadera, la pregunta Q4 no se mostrará.
Por lo tanto, si en la pregunta Q3 selecciono la respuesta “3”, la pregunta Q4 no se mostrará.
Condición de visualización con “Or” (||) #
Las condiciones de visualización con el símbolo “Or” muestran un elemento del cuestionario cuando al menos una de las condiciones con este símbolo es verdadera.
El símbolo para condiciones con “Or” es: ||
Por ejemplo:
Establezcamos la siguiente condición de visualización en la pregunta Q6
if(Q4==2||Q5==2)
En este caso, la pregunta Q6 se mostrará si selecciono la respuesta con código “2” en la pregunta Q4 o la respuesta “2” en la pregunta Q5.
Solo se necesita que una de las condiciones especificadas sea verdadera para que la pregunta Q6 se muestre.
Usar los operadores “OR” y “AND” en la misma condición #
Puedes combinar múltiples condiciones de cualquier nivel de complejidad, incluso combinando los operadores && y ||.
Por ejemplo:
Establezcamos una pregunta hipotética Q3 con la siguiente condición de visualización
if( Q1==99 || ( Q1==1 && Q1==2 ) )
En este caso, la pregunta Q3 solo se mostrará si se seleccionó la respuesta con código “99” en la pregunta Q1 o si se seleccionaron ambas respuestas “1” y “2” en la pregunta Q1.
Ten en cuenta que la condición Q1==1 && Q1==2 está entre paréntesis. Esto indica el orden de evaluación. En este ejemplo específico, el resultado de la condición se evaluará junto con la condición fuera de los paréntesis, de manera que es Q1==99 || [resultado de la condición entre paréntesis]
- Sin paréntesis, IdSurvey procesará primero las condiciones AND antes que las condiciones OR. Aunque recomendamos siempre usar paréntesis para evitar ambigüedades en el orden de evaluación, la condición del ejemplo anterior también podría escribirse sin paréntesis.
Cálculo algebraico #
Puedes formular expresiones algebraicas de cualquier complejidad dentro de las condiciones utilizando los operadores matemáticos suma, resta, multiplicación y división (+, -, *, /).
if( ([Q1]+[Q2]) <= 100 )
verifica si la suma de las respuestas numéricas dadas a las preguntas Q1 y Q2 es menor o igual a 100.
if( [Q5] == (retrieve(Q1, open)/2) )
verifica si el número insertado en la opción de respuesta abierta de la pregunta Q5 es igual a la mitad del ingresado en la pregunta Q1.
Funciones #
dSurvey proporciona una serie de funciones que pueden utilizarse en las condiciones de visualización, en FlowScript y en IdCode. Las funciones permiten realizar verificaciones sobre preguntas, campos de nominativos o el estado de una cuota. Por ejemplo, verificar cuántas respuestas se han seleccionado en una pregunta con opciones de respuesta múltiple o comprobar si cierta cuota está cerrada, etc.
Otras funciones especiales permiten procesar cadenas de texto, recuperar la etiqueta de una opción de una pregunta drag&drop según la posición (ranking) y mucho más.
| CountCode | Permite contar el número de opciones seleccionadas. | if(CountCode (Q1) >= 3) Verifica si en la pregunta Q3 se seleccionaron tres o más opciones. |
| ResponsesCodeOf | Devuelve los códigos de las respuestas seleccionadas en una pregunta. | if(Q2==responsesCodeOf(Q1) Verifica si la respuesta seleccionada en la pregunta Q2 tiene el mismo código que la seleccionada en la pregunta Q1. |
| CountResponsesWithCode | Permite contar el número de preguntas a las que se respondió con un código de respuesta específico. | if(CountResponsesWithCode(Q1,Q2,Q3,Q4,Q5,Q6,99) >= 3) Verifica si el código 99 se respondió en un mínimo de tres preguntas entre Q1, Q2, Q3, Q4, Q5 y Q6. |
| CountResponsesWithText | Permite contar el número de preguntas a las que se respondió con un texto o número específico. | if(CountResponsesWithText (Q1,Q2,Q3,Q4,Q5,Q6,'mar') >= 3) Verifica si la palabra «mar» se ingresó en al menos 3 de las respuestas de texto en las preguntas Q1, Q2, Q3, Q4, Q5 y Q6. |
| CheckQuota | Permite verificar si cierta cuota está abierta o completa. | if(CheckQuota ('Padres') == 1) Verifica si la cuota «Padres» está completa. |
| CompareDate | Compara dos fechas. Devuelve -1 si la primera fecha precede a la segunda, 0 si son iguales y 1 si la primera fecha es posterior a la segunda. | if(compareDate({FechaDeNacimiento}, ‘2010-10-01') == -1) Verifica si la fecha en el campo «FechaDeNacimiento» precede a la fecha especificada. |
| Module | Devuelve la secuencia CATI, CAWI o CAPI según el módulo con el que se esté respondiendo la entrevista actualmente. | if(module()==cawi)Verifica si la entrevista se está respondiendo actualmente vía CAWI. |
| ContainsText | Permite verificar la presencia de un texto específico dentro de una respuesta abierta. | if(ContainsText ([Q1],'mar')==1)Verifica si la respuesta de texto a la pregunta Q1 contiene la palabra «mar». |
| StartWithText | Compara el inicio de una secuencia con una secuencia especificada. | if(StartWithText({Móvil},'+39')==1)Verifica si el campo Móvil empieza por “+39”. |
| EndWithText | Compara el final de una secuencia con una secuencia especificada. | if(EndWithText({Identificador},'123')==1)Verifica si el campo Identificador termina con “123”. |
| GetVariable | Permite obtener el valor de una variable (en el nominativo o en una pregunta) creando dinámicamente el nombre de la propia variable. | getVariable('{fecha_de_nacimiento_hijo_'+{n_hijo}+'}') Obtiene el valor de la variable «n_hijo» (por ejemplo 3) y lo usa para generar el nombre de la variable «fecha_de_nacimiento_hijo_3» obteniendo el valor relacionado. |
| Join | Permite forzar la combinación de secuencias evitando que estas se interpreten como números. Por ejemplo, 10+02+12 daría como resultado 24, mientras que join(10,02,12) da 100212. | join(10,02,12) Crea la secuencia 100212.
Crea la secuencia text02respuestaAbiertaQ1. |
| Random | Crea un número aleatorio entre el número mínimo y el número máximo indicado. Puedes especificar un nombre para guardar el número generado con el fin de usarlo posteriormente. | random(1, 10) Crea un número aleatorio entre 1 y 10. random(1, 10, 'mi número aleatorio')Crea un número aleatorio entre 1 y 10 y lo guarda con el nombre especificado. Usando la misma sintaxis (en el FlowScript de cualquier otra página del cuestionario) se llamará de nuevo al número guardado y generado la primera vez. |
| Replace | Reemplaza el texto especificado dentro de una secuencia (Disponible a partir de IdSurvey 8.1) | Replace([Q1], 'coche', 'bus')Devuelve la secuencia de la respuesta de texto de la pregunta Q1 reemplazando la palabra «coche» por «bus».
Devuelve el campo Teléfono sin el prefijo +39. |
| GetItemByRanking | Obtiene la etiqueta o el código del ítem según su posición (Disponible a partir de IdSurvey 8.1) | GetItemByRanking(Q1, 1, label)Devuelve la etiqueta del elemento en la primera posición de la pregunta drag&drop (o – para la matriz – devuelve el texto de la fila donde se seleccionó la respuesta con código 1).
Devuelve el código del elemento colocado en la tercera posición de la pregunta drag&drop (o – para la matriz – devuelve el texto de la fila donde se seleccionó la respuesta con código 3).
o también GetItemByRanking(Q1, 1) Devuelve la etiqueta del elemento en la primera posición de la pregunta drag&drop. Si la etiqueta no está disponible, se obtiene el código. |
| Retrieve | Devuelve la respuesta seleccionada y permite especificar los datos a recuperar y el formato del separador de respuestas múltiples (Disponible a partir de IdSurvey 8.1) | retrieve(Q1)o también retrieve(Q1, auto) Devuelve la respuesta abierta (si está disponible) o la etiqueta de la respuesta seleccionada en la pregunta Q1. En caso de respuestas múltiples, se obtienen todas las opciones separadas por el carácter pipe “ | ”.
Como en el ejemplo anterior, pero en caso de respuestas múltiples, se obtienen todas las opciones separadas por una coma y un espacio.
Devuelve la respuesta de texto de la pregunta Q1.
Devuelve la etiqueta de la respuesta seleccionada en la pregunta Q1.
Devuelve el código de la respuesta seleccionada en la pregunta Q1.
Devuelve el texto insertado en el cuadro de comentarios. |
| FindContactId y Current | Devuelve el id del primer contacto que cumple una condición de búsqueda en la encuesta actual o, si se especifica, en la encuesta indicada. Si no encuentra coincidencias, devuelve un valor vacío. En la condición de búsqueda, los campos se evalúan en el contexto del contacto encontrado por la función; para compararlos con los valores del contacto actual es necesario usar current(campo). | if(findcontactid(({Email}=='juan.perez@correo.es'))!='') Comprueba si en la encuesta actual existe al menos un contacto con email igual a juan.perez@correo.es. if(findcontactid(({Email}=='juan.perez@correo.es'), 3050)=='') Comprueba si en la encuesta 3050 no existe ningún contacto con email igual a juan.perez@correo.es. if(findcontactid(({Email}==current({Email})), 3050)!='') Comprueba si en la encuesta 3050 existe al menos un contacto con email igual al del contacto actual. |