Saltar al contenido principal
Versión: 20 R7 BETA

Formula from string

Historia
LanzamientoModificaciones
20 R3Soporte del parámetro context
17 R6Renombrado: New formula from string -> Formula from string
17 R3Añadidos

Formula from string( formulaString : Text ) : 4D.Function
Formula from string( formulaString : Text ; context : Longint ) : 4D.Function

ParámetrosTipoDescripción
formulaStringTextFórmula texto a devolver como objeto
contextNumbersk execute in current database (por defecto) o sk execute in host database
Result4D.FunctionObjeto nativo que encapsula la fórmula

Descripción

El comando Formula from string crea un objeto 4D.Function basado en formulaString y, opcionalmente, context. formulaString puede ser tan simple como un valor único o complejo, como un método proyecto con parámetros.

This command is similar to Formula, except that it handles a text-based formula and allows to define an execution context. Normalmente se recomienda utilizar el comando Formula, excepto si la fórmula original se expresó como texto (por ejemplo, almacenada externamente en un archivo JSON), o si desea crear una fórmula en una base de datos local mientras llama a Formula from string desde un componente. Se recomienda especialmente utilizar sintaxis con tokens con este comando.

Dado que no se puede acceder al contenido de las variables locales por su nombre en el modo compilado, no se pueden utilizar en formulaString. Un intento de acceder a una variable local con Formula from string generará un error (-10737).

Si la fórmula se crea en un componente, puede considerar utilizar el parámetro context. Por defecto, dado que las fórmulas se ejecutan en el contexto en el que fueron creadas, no podrá llamar a una variable, función o método no compartido de la base de datos local. En este caso, puede pasar la constante sk execute in host database en el parámetro context para ejecutar el objeto 4D.Function en el contexto de la base de datos local. Las siguientes constantes están disponibles:

ConstanteTipoDescripción
sk execute in current databaseInteger(por defecto) La fórmula se ejecutará en el contexto en el que se creó
sk execute in host databaseIntegerLa fórmula se ejecutará en el contexto de la base de datos local

Ejemplo

El siguiente código creará un diálogo que acepta una fórmula en formato texto:

 var $textFormula : Text
var $f : 4D.Function
$textFormula:=Request("Please type a formula")
If(ok=1)
$f:=Formula from string($textFormula)
ALERT("Result = "+String($f.call()))
End if

...y ejecuta la fórmula:

Ver también

Formula
Parse formula