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, , , ,

Valorar la entrada
1 Puntos2 Puntos3 Puntos4 Puntos5 Puntos
(3 voto(s), 5,00 sobre 5)

Comentarios

  • Javier
    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.

    Valora este comentario: (0 votos)
  • Manuel tovar
    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

    Valora este comentario: (0 votos)
  • rcueto
    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.

    Valora este comentario: (0 votos)
  • Manuel tovar
    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

    Valora este comentario: (0 votos)
  • rcueto
    Enero 21, 2009 - 09:26 #

    Hola Manuel, efectivamente, es así.

    Un saludo.

    Valora este comentario: (0 votos)
  • Francisco Escribá
    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

    Valora este comentario: (0 votos)
  • rcueto
    Febrero 6, 2009 - 09:33 #

    Franciso, muchas gracias por tus comentarios. Tomo nota de tu sugerencia.

    Un saludo.

    Valora este comentario: (0 votos)

Comentar

Cerrar
Enviar por Correo