Reemplazar cant de tabla usando cursor VFP

Hola experto, mi pregunta es la siguiente, que esta mal en este codigo... Solo aqui me falla, hace todo como tiene que ser, recorre el cursor, y luego solo actualiza en la tabla de productos el ultimo producto agregado en el cursor...dejo parte del codigo.. Saludos y muchas gracias
SELECT prod_vend  
*** Ir al primer registro
GO TOP 
*Recorremos el cursor conm los productos de la compra para obtener el monto*y guardamos en la tabla de productos vendidos
DO WHILE !EOF("prod_vend")
SELECT punitario FROM productos WHERE productos.id_producto = prod_vend.id_pv;INTO CURSOR tempo_suma readwrite
monto_vent = CAST(monto_vent as float) + CAST((CAST(tempo_suma.punitario as float) * CAST(prod_vend.cant as integer)) as float)
*actualiza el stock
cantnueva = CAST(productos.cantidad as integer) - CAST(prod_vend.cant as integer)
replace productos.cantidad WITH cantnueva;
FOR CAST(productos.id_producto as character(15)) == CAST(prod_vend.id_pv as character(15))         
SELECT prod_vend  
SKIP
enddo

1 Respuesta

Respuesta
1
Raro el código.
Qué significa
"FOR CAST(productos.id_producto as character(15)) == CAST(prod_vend.id_pv as character(15))"
?
No es raro el código, es solo un replace. ¿t explico como funciona un replace? Experto...
replace (lo queres reemplazr) with (con lo que lo vas a reemplazar) for (condicion)
El CAST es un casteo a character, ya que el id de los productos es caracteres de longitud 15...
¿Entendiste lo que te pregunte?
Muchas gracias, de todos modos
PD... el código anda perfecto,, solo que modifca, el ultimo valor del cursor,,, y no todo lo anterior
Si ya lo vi, estaba escondido detrás de todos esos Cast(Cast(cast())).
Hazlo así:
SELECT prod_vend  
scan
   select productos
   set order to id_producto
   seek (prod_vend.id_pv)
   if found()
      monto_vent = CAST(prod_vend.monto_vent as float) + CAST((CAST(productos.punitario as float) * CAST(prod_vend.cant as integer)) as float)           
      *actualiza el stock
      cantnueva = CAST(productos.cantidad as integer) - CAST(prod_vend.cant as integer)
      replace productos.cantidad WITH cantnueva    
   endif
endscan
Pero para que este funcione, necesitas un índice para la tabla productos. Llámalo id_producto (Igual que el nombre del campo).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas