* Creo un cursor con productos (id, Descripción y una cantidad inicial)
CREATE CURSOR curProductos("idProducto" I ,"Descrip" c(40),;
"Compra" n(12,2),;
"Venta" n(12,2),;
"Stock" n(12,2))
FOR i=1 TO 10
INSERT INTO curProductos(Descrip,idproducto,stock) ;
VALUES ("PRODUCTO"+TRANSFORM(i), (i+i^2) , 0 )
NEXT
SELECT curProductos
INDEX on idProducto TAG idProduc
* Miro el cursor de productos
SELECT curProductos
GO top
BROWSE
* Simulo una operación de Compras
CREATE CURSOR curCompras ("IdProducto" I , "Cantidad" n(12,2))
RAND(-1)
FOR i=1 TO 10
INSERT INTO curCompras (idproducto,cantidad) VALUES (i+i^2, CEILING(RAND()*100 ) )
NEXT
* Actualizo Stock por Compras
SELECT curCompras
SCAN
IF INDEXSEEK(idProducto,.t.,"curProductos","idProduc")
SELECT curProductos
REPLACE stock WITH stock + curCompras.Cantidad,;
compra WITH compra + curCompras.Cantidad
ENDIF
ENDSCAN
* Miro el cursor de productos
SELECT curProductos
GO top
BROWSE
* Simulo una operación de Ventas
CREATE CURSOR curVentas ("IdProducto" I , "Cantidad" n(12,2))
RAND(-1)
FOR i=1 TO 10
INSERT INTO curVentas (idproducto,cantidad) VALUES ((i+i^2),CEILING(RAND()*10) )
NEXT
* Actualizo Stock por Ventas
SELECT curVentas
SCAN
IF INDEXSEEK(idProducto,.t.,"curProductos","idProduc")
SELECT curProductos
REPLACE stock WITH stock - curVentas.Cantidad,;
venta WITH venta + curVentas.Cantidad
ENDIF
ENDSCAN
* Miro el cursor de productos
SELECT curProductos
GO top
BROWSE