Literatura De Barroco
Enviado por vz185 • 14 de Noviembre de 2013 • 322 Palabras (2 Páginas) • 224 Visitas
Add y Subtract
Las asignaciones que vimos en la sección anterior eran relativamente fáciles, pero
existen casos mas sofisticados. Por ejemplo en la misma transacción de Artículos
tenemos el atributo ArtCnt en donde se quiere mantener cual es el stock que tenemos
de cada articulo.
Sin duda la transacción de Pedidos debe modificar ese valor, porque cada pedido
nuevo aumenta el stock. También existirá alguna otra transacción que hace disminuir
el stock, que podría ser por ejemplo una transacción de Facturación que se realiza
cuando se vende el articulo. Como esta transacción esta fuera del alcance del proyecto
solo estudiaremos la actualización del stock relacionada con la transacción de
Pedidos.
En dicha transacción se debe actualizar ArtCnt, esto se podría hacer con la
Asignación:GENEXUS- DISEÑO DE APLICACIONES
43
ArtCnt = ArtCnt + PedCnt;
Pero no debemos olvidar que en la misma transacción se permite crear, modificar o
eliminar un pedido, y la asignación anterior solo es correcta si se esta creando uno
nuevo, ya que si por ejemplo se está eliminando, la asignación correcta es:
ArtCnt = ArtCnt - PedCnt;
Entonces, para actualizar ArtCnt correctamente se necesitaría también considerar los
casos de modificación y eliminación, pero para evitar todo esto GENEXUS posee la
regla add() que lo hace automáticamente:
add(PedCnt, ArtCnt);
Con esta regla si se esta insertando una línea del pedido se suma la PedCnt a ArtCnt,
si se esta eliminando se resta y si se esta modificando le resta el valor anterior de
PedCnt (que se define como old(PedCnt) ) y le suma el nuevo valor.
Existe una dualidad entre la fórmula vertical SUM y la regla ADD, mas
concretamente se puede decir que un SUM redundante es equivalente a la regla ADD.
Por ejemplo el PedTot se puede definir como:
PedTot = SUM( PedImp ) y redundante
o
add( PedImp, PedTot );
Dado que es común que las fórmulas verticales tengan que estar redundantes para
tener buena performance se recomienda el uso de la regla ADD y no la fórmula SUM.
La regla SUBTRACT es equivalente pero realiza las operaciones contrarias, es decir
cuando se esta insertando resta, en caso de eliminación suma, etc.
...