You are on page 1of 10

Frmulas

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) :

{ InvoiceId*
CustomerId
CustomerName
InvoiceDate
Detail
{
InvoiceDetailId*
ProductId
ProductDescription
ProductPrice
InvoiceDetailQuantity
InvoiceDetailAmount
}
}
Invoice

{ InvoiceId*
CustomerId
CustomerName
InvoiceDate
InvoiceDetails Count(InvoiceDetailQuantity)
InvoiceAmount Sum(InvoiceDetailAmount)
Detail
{
InvoiceDetailId*
ProductId
ProductDescription
ProductPrice
InvoiceDetailQuantity
InvoiceDetailAmount
}
}
Invoice
Frmulas
Clasificacin
Ejemplos de Frmulas Aggregate (Globales) :
En ambos clculos solo intervienen los registros que
cumplen:

INVOICEDETAIL.InvoiceId = INVOICE.InvoiceId

{
ProductId*
ProductDescription
PriceList
{
ProductPriceListDate*
ProductPriceListPrice
}
}
Product
Frmulas
Clasificacin
Ejemplos de Frmulas Aggregate (Globales) :

{
InvoiceId*
CustomerId
CustomerName
InvoiceDate
InvoiceDetails Count(InvoiceDetailQuantity)
InvoiceAmount Sum(InvoiceDetailAmount)
Detail
{
InvoiceDetailId*
ProductId
ProductDescription
InvoiceDetailQuantity
InvoiceDetailProductPrice
InvoiceDetailAmount
}
}
Invoice
InvoiceDetailProductPrice*InvoiceDetailQuantity
Max(ProductPriceListDate,
ProductPriceListDate<=InvoiceDate,
0, ProductPriceListPrice)

Sum(InvoiceAmount) / Count(InvoiceAmount)

Frmulas
Clasificacin
Ejemplo de Frmula Compuesta (Global):
{ CustomerId*
CustomerName
CustomerTotalPurchases
CustomerTotalPayments
CustomerBalance
CustomerAverage
}
Customer

You might also like