Enketo Error - After Update

Buenas noches estimada comunidad.

Solicito su ayuda, tengo un formulario que venia trabajando normal, pero después de la actualización, no me está funcionando varios calculate y relevant en enketo, he probado desde kobocollect y todo marcha bien, pero en enketo no, un ejemplo, tengo un campo calculado para establecer la edad a partir de la fecha de nacimiento, utilice esta formula: int((today()-date(${fecha_nacimiento})) div 365.25). todo venia bien, pero ahora ya no funciona, y así me sucede con muchas otras preguntas, casi el 65% de las preguntas ya no funcionan.

Thank you for bringing this to the community, @Yimi! We will have a look and get back to you very soon. In the meantime could you also let us know the server you are using?

Buen día estimado @Kal_Lam.

Esto sucede en ambos servidores, Tengo una cuenta de mi trabajo en el https://kobo.humanitarianresponse.info y una cuenta personal en https://kf.kobotoolbox.org, y en ambos pasa lo mismo.

En este momento he creado un nuevo formulario en https://kf.kobotoolbox.org, se implementa con normalidad y desde kobo collect funciona correctamente, pero desde enketo me muestra esto:

Agradezco su ayuda.

1 Like

What about when you create a clone of the project (that is currently having issue) and try to load it through Enketo?

Hello @Yimi,
You might also try your form with the ODK Previewer (Online validator) here: https://getodk.org/xlsform/

1 Like

@Kal_Lam clonar el proyecto, pone en algún riesgo los datos que tengo actualmente??

@wroos muchas gracias por su colaboración, utilizó el validador y todo es correcto, pero al previsualizar, sigue el problema en enketo, insisto que en kobotoolbox la carga del xlsfoms en normal sin ningún problema, al igual que en kobo collect, funciona correctamente. los errores se presentan en enketo.

@Kal_Lam ya realice la clonación pero el error persiste en enketo.

image

1 Like

@Yimi, could you share with me the following through a private message so that we could have a closer look at it?

  • Username
  • Project name
  • Server

Buen día estimado @Kal_Lam

Ya he enviado mensaje privado con la información solicitada.

Muchas gracias por la ayuda.

@Yimi, I see a wrong column header in your xlsform:

image

Could you change the readonly to read_only and deploy it as a new dummy project to see if it should have any issue?

Maybe your survey project should not have any issue upon fixing this issue.

@Kal_Lam realice al ajuste pero el problema persiste, sigue sin calcular la edad.

y me lleva la final de la encuesta, omitiendo el resto de preguntas, voy a probar buscando otra formula para calcular la edad, creo que el problema radica ahí.

1 Like

Yes, maybe you could re-work on the expression you have used.

@Kal_Lam Ya solucione el problema del formulario, efectivamente no entiendo por que ahora la función de calculo de edad no sirve, tuve que cambiarla, y con eso solucioné el problema, pero surgió otro problema, generó un código único con esta formula: concat(‘A’,${cod_mun},’-’,format-date(${fecha_encuesta},’%d%m%y’),’-’,format-date(${start},’%H%M%S’)) pero ahora los últimos dígitos que generó a partir de el metadato start ya no funciona, solo salen ceros (000000) no se a que se debe el error.

I think your issue is coming from the last part of you concat command i.e. format-date(${start},’%H%M%S’) it seems that the format is not being picked. Do you want to try just this part in a calculation and see the results?

Stephane

1 Like

@stephanealoo Muchas gracias por su ayuda, he probado solo con esta parte: format-date(${start},’%H%M%S’) y el resultado obtenido es: 000000.

Hello @Yimi,
As far as I know, start is a date-time type. So, you need to use format-date-time(…). See https://getodk.github.io/xforms-spec/#fn:format-date-time

1 Like

Estimados @Kal_Lam @stephanealoo @wroos muchas gracias por su valioso aporte.

Para el primer tema de error en el formulario, todo se genero por problemas en la fórmula para calcular la edad, anteriormente tenia esta formula int((today()-date(${fecha_nacimiento})) div 365.25) pero al parecer ahora ya no funciona así que la emplace por esta: round((decimal-date-time(today()) - decimal-date-time(${fecha_nacimiento})) div 365.25).

En cuánto al segundo caso, donde requiero generar un código único utilizando la hora de inicio del formulario, utilizaba esta función: format-date(${start},’%H%M%S’), al igual que la anterior, funcionaba bien ahora no, así que ahora la reemplace por esta: concat(substr(${fecha_hora}, 22, 24), substr(${fecha_hora}, 25, 27), substr(${fecha_hora}, 28, 30)) y al parecer todo funciona bien.

Una ultima pregunta, ¿generé un campo fecha hora ${fecha_hora}, hay alguna manera de que cuando esta variable ya obtenga un valor, este campo quede como solo lectura para evitar que este dato se modifique?.

Agradezco inmensamente su apoyo.

Buen día estimada comunidad,

Al igual que @Yimi tengo el inconveniente con un campos de tipo time, los cuales utilizo para realizar una resta que me indica la duración (en horas) de las actividades desarrolladas por el personal en campo:

El inconveniente radica en que al abrir el reporte que se genera para la impresión en PDF los campos de tipo time se presentan en 00:00:

Agradezco su ayuda.

To better locate the problem, could you try to separate the calculation steps and to make them visible: decimal types, first calculate/show difference, then *24, then round() ?

Might this problem be related to a known Enketo bug? See Fix: Respect existing val of type='time' by JGreenlee · Pull Request #980 · enketo/enketo-core · GitHub (fixed in the next release).

1 Like