¿Cuándo se evalúa la fórmula de un contenido inicial de un campo?
- Publicado por [N3] rcueto.velneo
- Desarrolladores, Velneo
En Velneo tenemos la posibilidad de establecer, por medio de una expresión de tipo fórmula, un contenido inicial en las propiedades de un campo. En dicha fórmula podremos usar constantes, variables globales, otros campos tanto de la tabla actual como de tablas enlazadas, funciones de fórmulas, funciones-proceso, etc.
A la hora de programar conviene tener claro en qué momento se evalúa la fórmula establecida como contenido inicial. Para explicarlo usaré una serie de ejemplos.
Si la fórmula del contenido inicial del campo solamente contiene una constante, como por ejemplo “ABC” o una función de fórmulas del tipo fHoy() –que devuelve la fecha del sistema-, se evalúa en el momento de inicializar el registro en el alta. Una vez disparado el contenido inicial, éste ya no volverá a dispararse.
Si en la fórmula intervienen campos de la misma tabla, la fórmula será evaluada siempre que cambie el valor de cualquiera de ellos. Por ejemplo, en una línea de factura para obtener el total de la misma establecemos el siguiente contenido inicial:
%CANTIDAD% * %PRECIO%
Este contenido inicial se disparará siempre que cambien los campos CANTIDAD o PRECIO de esa ficha.
Analicemos ahora el siguiente contenido inicial:
fDecidirDato( fCampoVacio( %ID_MAESTRO% ), fHoy(), %ID_MAESTRO.FECHA% )
En ella se evalúa –fDecidirDato()- si un campo enlazado a maestro -ID_MAESTRO- está vacío –fCampoVacio()-, en caso afirmativo, el campo tomará la fecha del sistema –fHoy()-, en caso contrario, el valor de un campo de tipo fecha del maestro –ID_MAESTRO.FECHA-.
En este caso, en el alta de una ficha, si dejamos vacío el campo enlazado al maestro, el campo no tomará valor alguno. ¿Y por qué? Porque el campo enlazado al maestro usado para evaluar la condición no ha cambiado su valor; al no cambiar su valor, no se evalúa la fórmula. Si la tabla es maestra o submaestra, forzar la evaluación de la fórmula sería sencillo, tan sólo habría que añadir en algún punto de la fórmula que no afecte a la misma el campo CODIGO. Como este campo sí que cambia en el alta del registro estamos forzando a que se dispare el contenido inicial de este campo en el alta de la ficha:
fDecidirDato( fCampoVacio( %ID_MAESTRO% ) & %CODIGO%, fHoy(), %ID_MAESTRO.FECHA% )
Advertir que cuando en el contenido inicial intervienen campos de un maestro, como en el caso anteriormente expuesto que interviene el campo FECHA de una tabla maestra, si editamos la ficha del maestro y cambiamos la fecha, lógicamente, no se disparará el contenido inicial, pues no estamos modificando la ficha que tiene declarado ese contenido inicial. En este caso, si nos interesase actualizar la fecha de los históricos de este maestro tendríamos que crear en la tabla maestra un evento de tabla que lo haga.
Por último, también podemos usar como contenido inicial de un campo llamadas a funciones de dll o llamadas a funciones-proceso…
Continuará…
Etiquetas: contenido inicial, Desarrolladores, formulas, programación, tablas








Enero 20, 2009 - 08:00 #
Me ha parecido muy interesante.
He aprendido cosas que desconocía del contenido inicial de un campo.
Muchas gracias.
Salu2.
Enero 20, 2009 - 13:46 #
Hola. Interesante el tema. No entiendo el penúltimo párrafo donde dice:
Advertir que cuando en el contenido inicial intervienen campos de un maestro, como en el caso anteriormente expuesto que interviene el campo FECHA de una tabla maestra, si editamos la ficha del maestro y cambiamos la fecha, lógicamente, no se disparará el contenido inicial, pues no estamos modificando la ficha que tiene declarado ese contenido inicial. En este caso, si nos interesase actualizar la fecha de los históricos de este maestro tendríamos que crear en la tabla maestra un evento de tabla que lo haga.
Saludos cordiales
Manuel Tovar
Barranquilla – COLOMBIA
Enero 20, 2009 - 14:13 #
Gracias por vuestros comentarios.
A Manuel Tovar: Te agradecería que me concretases qué parte es la que no comprendes; si es la de la explicación del porqué no se dispara el contenido inicial o la de la solución a adoptar.
Gracias por tu colaboración.
Enero 20, 2009 - 21:23 #
No entendía por qué no se dispara el contenido inicial si cambia uno de los campos de la fórmula. Releyendo entiendo que el contenido inicial se dispara cuando cambia uno de los campos que intervienen en la fórmula siempre que sean de los campos de la ficha editada, no de los maestros relacionados. ¿Es así?
Gracias por responder.
Saludos cordiales
Manuel Tovar
Barranquilla – COLOMBIA
Enero 21, 2009 - 09:26 #
Hola Manuel, efectivamente, es así.
Un saludo.
Febrero 3, 2009 - 15:52 #
Quiero Agradecerles por estas capsulas de conocimiento. Había notado en la gestion administrativa que los campos de estado de los documentos cambiaban automaticamente y no entendía como lo hacian ya que el valor de la tabla está en valor inicial unicamente no es un campo de formula. Pero ahora lo he entendido perfectamente, necesita dicha formula de valor inicial contener un campo de la tabla para que este se actualize siempre. Este comentario es para solicitarles que sigan con este tipo de ayudas que nos benefician muchisimo para mejorar en nuestros desarrollos haciendo más técnicos para presentar soluciones con todas las herramientas que nos proporciona Velneo.
Gracias
Febrero 6, 2009 - 09:33 #
Franciso, muchas gracias por tus comentarios. Tomo nota de tu sugerencia.
Un saludo.