Busca en nuestra documentación, explora nuestros recursos y visita nuestro Foro de la Comunidad para obtener información más detallada
Última actualización: 6 de mayo de 2026
La conexión dinámica te permite usar datos de un proyecto primario dentro de proyectos secundarios, lo que simplifica el manejo de la recolección de datos longitudinales. Este artículo explica cómo conectar dinámicamente datos entre proyectos de KoboToolbox.
Nota: Las conexiones dinámicas de proyectos funcionan de manera similar a la función pulldata(), pero eliminan la necesidad de archivos CSV separados, ya que los datos del proyecto primario vinculado sirven como fuente de datos.
Puedes recuperar diversas respuestas sin multimedia de un proyecto primario y realizar cálculos sobre estos datos vinculados en un proyecto secundario. Esto puede ser útil para recuperar datos de referencia, información de contacto o registros de salud en estudios de cohorte, o para confirmar o verificar datos recolectados previamente.
Recomendamos usar XLSForm para configurar las conexiones dinámicas de proyectos. Para ver ejemplos de proyectos primarios y secundarios, descarga los archivos de ejemplo aquí y aquí. Para aprender a configurar conexiones dinámicas de proyectos en el Formbuilder de KoboToolbox, consulta Conexión dinámica de proyectos en el Formbuilder.
La conexión dinámica de proyectos requiere un proyecto primario y al menos un proyecto secundario. El proyecto primario no requiere ninguna modificación respecto a un XLSForm normal. Sin embargo, la configuración del o los proyectos secundarios implica los siguientes pasos:
En la hoja survey de tu XLSForm, agrega una fila y define el tipo de pregunta como xml-external.
En la columna name, proporciona un nombre corto para el formulario primario. Este nombre puede contener caracteres del alfabeto latino, guiones bajos y números.
hoja survey
type |
name |
label |
|---|---|---|
xml-external |
parent |
|
survey |
A lo largo del formulario, puedes recuperar valores del proyecto primario creando una nueva pregunta e incluyendo la expresión adecuada en la columna calculation (consulta la tabla a continuación). Puedes usar los siguientes tipos de preguntas para recuperar datos:
Usa el tipo de pregunta calculate para recuperar y almacenar valores para uso futuro dentro del formulario o conjunto de datos (por ejemplo, para cálculos o etiquetas de preguntas dinámicas).
Usa los tipos de pregunta text, integer, decimal, date, select_one o select_multiple para incluir los valores recuperados como respuestas predeterminadas en campos editables. Los datos editados en el proyecto secundario no modificarán los datos originales del proyecto primario.
hoja survey
type |
name |
label |
calculation |
|---|---|---|---|
xml-external |
parent |
||
text |
participant_id |
What is the participant’s ID? |
|
integer |
age |
Confirm the participant’s age |
instance(“parent”)/root/data[enrollment_id = current()/../participant_id]/age |
survey |
Nota:
Para mostrar datos vinculados sin permitir que los usuarios editen el campo, usa una pregunta calculate seguida de una pregunta note que muestre el valor calculado. También puedes usar preguntas text, integer, decimal, select_one o select_multiple con la columna read_only configurada como TRUE.
En la columna calculation de la fila donde se recuperarán los datos vinculados, incluye una de las expresiones de la tabla a continuación. Estas expresiones se denominan XPaths.
Para cada expresión de la tabla a continuación:
parent es el nombre único asignado al formulario primario (por ejemplo, en la pregunta xml-external del formulario secundario).
parent_question hace referencia al name de una pregunta del formulario primario.
child_question hace referencia al name de una pregunta del formulario secundario.
parent_index_question es la pregunta identificadora del formulario primario que lo vincula al formulario secundario (por ejemplo, un ID único o el nombre de la organización).
child_index_question es la pregunta identificadora del formulario secundario que lo vincula al formulario primario (por ejemplo, un ID único o el nombre de la organización).
parent_group hace referencia al name del grupo en el formulario primario en el que se encuentra parent_question.
parent_index_group hace referencia al name del grupo en el formulario primario en el que se encuentra parent_index_question.
XPath |
Descripción |
|---|---|
|
Devuelve el número total de filas en el proyecto primario. |
|
Devuelve el número total de filas en el proyecto primario donde |
|
Devuelve el recuento total de instancias donde el valor de |
|
Devuelve el valor de |
|
Igual que el anterior, pero especifica que solo se deben devolver los datos de la primera instancia de |
|
Devuelve la suma de los valores de |
|
Devuelve el valor máximo ingresado en |
|
Devuelve el valor mínimo ingresado en |
Nota: Si la pregunta del formulario primario no está incluida en ningún grupo, omite parent_group de la expresión.
Una vez que tus XLSForms estén configurados, inicia sesión en tu cuenta de KoboToolbox y sigue estos pasos:
Crea e implementa el proyecto primario, si aún no está implementado.
Activa el uso compartido de datos para el proyecto primario:
En la ventana CONFIGURACIÓN > Conectar proyectos del proyecto primario, activa el interruptor Compartir datos (desactivado por defecto) y haz clic en CONFIRMAR Y CONTINUAR en la ventana de confirmación.
Todos los datos se comparten por defecto, pero puedes restringir variables específicas para compartir con proyectos secundarios haciendo clic en «Seleccionar las preguntas específicas a compartir».
Nota: Si los proyectos tienen diferentes propietarios, el propietario del proyecto primario debe compartir el proyecto con el propietario del proyecto secundario. Los permisos mínimos requeridos para que las conexiones dinámicas de proyectos funcionen son Ver formulario y Ver envíos. Ten en cuenta que esto permite a los administradores del proyecto secundario ver todos los datos del proyecto primario.
Crea e implementa el proyecto secundario.
Conecta el proyecto secundario al proyecto primario:
En la ventana CONFIGURACIÓN > Conectar proyectos del proyecto secundario, haz clic en «Seleccionar un proyecto diferente desde el cual importar datos». Un menú desplegable te permitirá seleccionar un proyecto primario para vincular.
Cambia el nombre del proyecto primario vinculado al nombre de la pregunta xml-external definido en el XLSForm y haz clic en IMPORTAR.
Luego puedes seleccionar preguntas específicas del proyecto primario para compartir con el proyecto secundario (recomendado), o seleccionar todas las preguntas.
Si agregas nuevos campos al formulario primario y deseas usarlos en el proyecto secundario, vuelve a importar el proyecto primario en la configuración del proyecto secundario.
Nota: Los formularios solo pueden vincularse entre sí si están en el mismo servidor de KoboToolbox.
Es posible que un proyecto primario y un proyecto secundario sean el mismo proyecto. Los pasos son los mismos que los descritos anteriormente. Algunos ejemplos de casos de uso incluyen:
Monitoreo diario: Si se usa un formulario para encuestar a la misma persona a lo largo del tiempo, puedes vincularlo consigo mismo para contar los envíos anteriores. Esto puede permitirte mostrar un mensaje (por ejemplo, «el monitoreo está completo») después de un cierto número de entradas, o informar al encuestador sobre el número de formularios enviados, como se muestra en el ejemplo a continuación.
hoja survey
type |
name |
label |
calculation |
|---|---|---|---|
xml-external |
monitoring |
||
text |
participant_id |
What is the participant’s ID? |
|
calculate |
count |
count(instance(“monitoring”)/root/ data[monitoring/participant_id = current()/../participant_id]) |
|
note |
monitoring_note |
This participant has been surveyed ${count} times. |
|
survey |
Formulario de registro: Al vincular un formulario de registro consigo mismo, puedes verificar si un usuario ya ha sido registrado. Esto puede permitirte generar un mensaje de error o agregar una restricción si ya está registrado, evitando registros duplicados, como se muestra en el ejemplo a continuación.
hoja survey
type |
name |
label |
calculation |
relevant |
|---|---|---|---|---|
xml-external |
registration |
|||
text |
customer_id |
What is the customer’s ID number? |
||
calculate |
count |
count(instance(“registration”)/root/ data[registration/customer_id = current()/../customer_id]) |
||
note |
already_registered |
This customer is already registered. Please close this form. |
${count} > 0 |
|
survey |
Los datos de proyectos conectados dinámicamente pueden recolectarse usando la aplicación Android KoboCollect o formularios web.
Al recolectar datos, ten en cuenta lo siguiente:
El proyecto primario debe tener al menos un envío para que el proyecto secundario funcione correctamente.
Al recolectar datos en línea, hay un retraso de cinco minutos en la sincronización de los nuevos datos del proyecto primario con el proyecto secundario.
En modo sin conexión, descarga el proyecto secundario con frecuencia para garantizar la sincronización de datos con el proyecto primario.
Nota: Puedes configurar la aplicación Android KoboCollect para que actualice automáticamente los datos del proyecto primario cuando haya conexión a internet disponible. Ve a Ajustes > Manejo de formularios > Modo de actualización de formulario en blanco y selecciona Solo formularios descargados previamente o Coincidencia exacta de servidor. Puedes configurar la frecuencia de descarga automática para que ocurra cada 15 minutos, cada hora, cada seis horas o cada 24 horas. Ten en cuenta que activar esta configuración puede aumentar el consumo de batería.
name de la hoja survey.calculate fuera del grupo de repetición en el formulario primario y usarlas para almacenar los valores del grupo de repetición necesarios en el formulario secundario. Luego, extrae estos valores calculados al formulario secundario en lugar de extraerlos directamente del grupo de repetición.[position()=1], como se muestra a continuación:
instance('parent')/root/data[parent_index_group/parent_index_question = current()/../child_index_question][position()=1]/parent_group/parent_question
trigger a tu XLSForm. En la fila que contiene la expresión de datos dinámicos, ingresa el `name` de la pregunta de índice del formulario secundario en la columna trigger.
select_one o select_multiple, las conexiones dinámicas de proyectos usarán el nombre de la opción, no la etiqueta de la opción.
Para mostrar la etiqueta de la opción en tu formulario secundario, usa uno de los siguientes enfoques:
choices.jr:choice-name() para recuperar la etiqueta de la opción y luego extrae ese valor calculado al formulario secundario.¿Encontraste lo que buscabas? ¿Te ha parecido clara la traducción? ¿Faltaba algo?
¡Comparte tus comentarios para ayudarnos a mejorar este artículo!
KoboToolbox es mantenido por Kobo Inc.