Problemas con guardar un registtro de venta

Hola javi tengo una consulta si me podrías ayudar por favor estoy queriendo guardar una venta pero no entiendo porque no lo hace ni siquiera me cae en error nada entonces no se que estoy haciendo mal.. Como veras estoy utilizando campos de diferentes tablas como el de artículos, venta, cliente, detalle_venta... Abajo te escribo como ago la programación en el procedimiento clic de mi botón guardar.. Para cualquier especificación que necesitas por favor solo escríbeme en el foro o en mi correo es el siguiente [email protected] ya muchas gracias por tu atención!
IF MESSAGEBOX("Desea grabar este dato?",4+32+0)=6
ok=SQLEXEC(nhandle,'insert into venta values(?nro_factura,?idCliente,?condi_venta,?fecha)')
SELECT venta
SELECT detalle_venta
GO TOP
DO WHILE !EOF()
=SQLEXEC(nhandle,'insert into detalle_venta values(?nro_factura,?idArticulo,?descripcion,?cantidad,?precio,?iva_5,?iva_10,?exentas,?subtotal,?total)')
=SQLEXEC(nhandle,"update articulo set Stock = M.Stock - ?cantidad where idArticulo = ?idArticulo")    
SELECT Articulo
thisform.Refresh
SKIP
ENDDO
ENDIF
NODEFAULT
thisform.Refresh
THISFORM.GRP1. CANCELAR.Click

1 Respuesta

Respuesta
1
El error lo tienes en el dowhile. Tienes que recuperar la tabla detalle_venta antes del SKIP. Te muestro la corrección:
SELECT detalle_venta
GO TOP
DO WHILE !EOF()
=SQLEXEC(nhandle,'insert into detalle_venta values(?nro_factura,?idArticulo,?descripcion,?cantidad,?precio,?iva_5,?iva_10,?exentas,?subtotal,?total)')
=SQLEXEC(nhandle,"update articulo set Stock = M.Stock - ?cantidad where idArticulo = ?idArticulo")    
SELECT Articulo
thisform.Refresh
SELECT detalle_venta
SKIP
ENDDO
*Salu2!
Le agregue la corrección que me habías dicho pero de igual manera no me guarda en la BD.. ese mismo código lo utilizo para mi compra y ahí me funciona sin ningún problema... si necesitas más información para aclarar alguna duda que puedas tener seria genial si me lo decís por favor... gracias
Lo que puedo observar en este código es que utilizas detalle_venta para obtener los datos y para grabarlos también, verifica que los nombres de tablas estén bien y que si es así uses algún alias diferente para el cursor de factura.
SELECT DETALLE_VENTA
GO TOP
DO WHILE !EOF()
=SQLEXEC(nhandle,'insert into DETALLE_VENTA values(?nro_factura,?idArticulo,?descripcion,?cantidad,?precio,?iva_5,?iva_10,?exentas,?subtotal,?total)')
=SQLEXEC(nhandle,"update articulo set Stock = M.Stock - ?cantidad where idArticulo = ?idArticulo")    
SELECT Articulo
thisform.Refresh
SELECT detalle_venta
SKIP
ENDDO

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas