Consultorio Velneo: ¡Actualizaciones al poder!

Muy interesante la pregunta que me hace David Cueva desde Juarez (México) y que creo que se puede resolver mediante la creación de 3 campos y 1 actualización ¿no te lo crees?.. Sigue leyendo.

Actualizaciones al poder

La pregunta en cuestión es la siguiente:

Tengo un formulario de mantenimiento a x unidad…en el tengo datos de la unidad a servir, fecha, y un boleano que me indicara cuando el mantenimiento actual..esta terminado….abajo….una vista de datos donde esta la rejilla de lineas de mantenimiento (editable)…donde tengo el servicio a dar…y entre otras cosas un campo de finalizado…..
lo que no puedo lograr es que al momento que todas las lineas (servcios), esten en finalizado si….en ese instante me habilite el campo Terninado en el formulario…si hay algun servicio sin terminar…debe permanecer deshabilitado…
Mediante control de evento y eventos….lo hace..pero a destiempo…no en tiempo real…..
Antes de continuar, es muy recomendable que, si no lo has hecho ya, leas este artículo acerca de las actualizaciones.

Definiendo el problema

Básicamente David tiene un registro (maestro) en el que hay que cambiar un campo de tipo booleano en función de si todas sus líneas (plural) están en estado terminado o no (te recomiendo leer también este otro post sobre las relaciones entre tablas).

David lo ha conseguido mediante maneadores de evento pero el problema es que no consigue que el valor del campo booleano se actualice en tiempo real.

Siempre digo que todo lo que podamos hacer en el proyecto de datos, es recomendable hacerlo ahí. Velneo se encargará de realizar las operaciones necesarias para actualizar los registros.

Pues vamos a ello…

Creando los campos necesarios

Para aplicar la solución, en el registro del mantenimiento vamos a crear dos campos de tipo numérico:

  • NUM_LIN_TOT: iremos acumulando en este campo el número de líneas que tiene el registro en cuestión.
  • NUM_LIN_TER: iremos acumulando en este campo el número de líneas que estén terminadas.

Además vamos a modificar el contenido inicial del campo booleano (le llamaremos B_TER) que nos indica si el mantenimiento está terminado o no:

  • choose(#NUM_LIN_TOT= #NUM_LIN_TER, 1, 0)

De esta forma conseguiremos que el campo se marque como “Terminado” cuando el nº de líneas terminadas sea igual al nº de líneas totales.

Velneo se encarga del resto: Actualizaciones al poder

Ahora sólo nos falta que los campos para el número de líneas se vayan actualizando de forma automática.
Para ello vamos a crear una actualización en la tabla de líneas de mantenimiento que actualice el maestro de mantenimientos.
Una vez creada, vamos a dar de alta dos componentes:
Nº de líneas totales
Actualización sencilla… cada vez que demos de alta una línea del mantenimiento… se acumula 1 en el campo NUM_LIN_TOT.

Nº de líneas terminadas

Mediante este componente de actualización, iremos añadiendo 1 al nº de líneas terminadas pero solamente cuando la línea esté terminada (la condicionamos a que el campo B_TER esté a 1).

Conclusión

Pues si esperabas algo mas de dificultad… lo dejaremos para otro día. Con estas sencillas instrucciones, David conseguirá lo que se propone.

Cuando el valor del campo NUM_LIN_TER sea igual al del campo NUM_LIN_TOT, querrá decir que todas las líneas estarán terminadas y por tanto el campo booleano B_TER se marcará a 1.

Ya sabes que si tienes alguna duda sobre Velneo, puedes hacérmela llegar a través del formulario de contacto e intentaré responderla.

Déjame un comentario mas abajo y comenzamos el debate.

Francisco José Vila Martín
ayudavelneo@ayudavelneo.com

Francisco José Vila es autor del blog Ayudavelneo desde donde ayuda a desarrolladores que se están iniciando en Velneo a acortar su curva de aprendizaje para que obtengan beneficios y sean rentables desde el minuto 1. Además es programador certificado y formador en la plataforma de desarrollo de aplicaciones empresariales Velneo V7. Ampliar información

2 Comments
  • Gabri
    Posted at 15:55h, 05 julio Responder

    A las buenas,
    Y para poner la guinda al pastel, añadiría que ese contenido inicial del campo booleano, se recalcula porque uno de los campos que intervienen en el contenido inicial ha cambiado, en tu caso NUM_LIN_TER o NUM_LIN_TOT, ¿no es así?

    Saludos

    • Francisco José Vila Martín
      Posted at 18:24h, 05 julio Responder

      Correcto Gabri.

      Al modificarse uno de los campos que intervienen en la fórmula del contenido inicial, fuerza a que se recalque el campo.

      Un saludo

Post A Comment

Pin It on Pinterest