Definir frmulas nos brinda una forma clave de compartir conocimiento y
obtener cdigo generado optimizado
Cuando el valor de un atributo o variable puede calcularse a partir de otros atributos, constantes y/o funciones, puede definirse como una frmula
Contamos con 2 formas de definir frmulas:
- Globales: A nivel de la Base de Conocimiento - Locales: En medio de cierto cdigo
Veremos este concepto en primer lugar Veremos este concepto ms adelante con ms conocimientos de GeneXus Frmulas Objetivos y Definicin Frmula Global = atributo al cual el analista GeneXus le asigna un clculo asociado.
Slo atributos pueden definirse como frmulas globales, no variables.
Cmo se realiza esta definicin?
Frmulas Globales Accediendo al editor de frmulas desde la estructura de la transaccin Decimos que:
Significando que:
No se crean como atributos fsicos. Para cada objeto que referencie un atributo frmula global, GeneXus incluir en su programa generado el cdigo necesario para realizar el clculo y desplegarlo en tiempo de ejecucin.
Tabla base / Tabla asociada a un atributo frmula global:
Tabla en la cual el atributo se almacenara si no fuera frmula.
Frmulas Globales atributos frmula globales = atributos virtuales Frmulas Clasificacin Horizontales: Una o varias expresiones aritmticas
Aggregate: Sum, Count, Average, Max, Min, Find
Compuestas: Conjunto de expresiones Horizontales y/o Aggregate
Importante:
- Cuando definimos frmulas en GeneXus no indicamos clasificacin.
- La clasificacin es externa a GeneXus y su finalidad es agrupar frmulas por:
Tipo de clculo que ofrecen. Atributos que se pueden involucrar en su definicin.
TODAS PERMITEN QUE SE LES INCLUYA CONDICIN DE DISPARO APLICA A GLOBALES Y LOCALES Frmulas Clasificacin Ejemplo de Frmula Horizontal (Global) : CustomerTotalPurchases CustomerTotalPayments
{ CustomerId* CustomerName CustomerTotalPurchases CustomerTotalPayments CustomerBalance } Customer TABLA CUSTOMER CustomerId* CustomerName CustomerTotalPurchases CustomerTotalPayments DEJA DE PERTENECER FSICAMENTE A LA TABLA ProductPrice*InvoiceDetailQuantity if InvoiceDetailQuantity<=100; ProductPrice*InvoiceDetailQuantity*0.9 otherwise; Frmulas Clasificacin Ejemplo II de Frmula Horizontal (Global) :