Nueva opción para el comando «Formula from string»

Como desarrollador 4D, probablemente ya ha creado y utilizado fórmulas. Pueden crearse a través de dos comandos, Formula y Formula from string. Este último acaba de ser mejorado en 4D V20 R3 para que pueda ser utilizado sin límites a partir de los componentes.

 

Fórmulas y contexto de ejecución

 

Las fórmulas, sea cual sea su contenido, están íntimamente ligadas a la base de datos a partir de la cual se crean. Cuando se llaman, siempre se ejecutan en el contexto en el que fueron creadas.

Esto es válido para los comandos 4D y las funciones como Structure file, pero también para las fórmulas basadas en llamadas a métodos.

Un ejemplo sencillo

Imaginemos un método FormatedCurrentDate que devuelve una cadena formateada.

 

#DECLARE($format : Integer)->$formatedDate : Text
$formatedDate:=String(Current date; $format)

Este método puede utilizarse dentro de una fórmula, que puede crearse de esta forma:

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)")

En este caso, la fórmula devolverá la fecha formateada como se esperaba.

$date:=$formula.call()

Cuando el método y la fórmula están en el mismo entorno, todo va bien… pero si este método no compartido está en la base de datos local y la fórmula que intenta utilizar este método se crea dentro de un componente, no podrá ejecutarse.

Un nuevo parámetro está ahora disponible

Se ha añadido un nuevo parámetro a la función Formula from string para que pueda elegir y decidir en qué contexto se ejecutará la fórmula.

#1) SK EXECUTE IN HOST DATABASE

Si volvemos al ejemplo anterior, donde el método no compartido FormatedCurrentDate pertenece a la base de datos local, será posible ejecutarlo de todas formas desde un componente creando la fórmula de la siguiente manera:

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)";sk execute in host database)
#2) sk ejecutar en base de datos actual

Si se pasa el valor sk execute in current database (o simplemente se omite), entonces la fórmula se ejecutará en la base de datos que creó la fórmula.

Conclusión

Esta nueva opción le permitirá crear fácilmente sus propios componentes de interfaz (para 4D Write Pro, por ejemplo) utilizando métodos o variables de la base de datos local.

Más libertad y más poder significan también más responsabilidad, pero esta apertura sigue siendo muy práctica y permite a los componentes acceder a funciones de sus bases de datos anfitrionas de una forma extremadamente sencilla.

No dude en compartir sus impresiones en el foro.

 

 

 

 

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.