Tema: Facturacion
Ver Mensaje Individual
  #4  
Antiguo 17-07-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - Espańa
Posts: 18.874
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Cesar Junior Ver Mensaje
En la parte de ventas tengo un DBgrid donde son insertados los productos que seran vendidos (facturados) y al realizar esse processo se descuenta el mismo producto del BD Stock (ACCESS) salvo la venta y perfectamente funciona!!. Ahora el problema es: igual si no salvo la venta al insertar el producto me descuenta del BD,si cierro el programa sin salvar me descuenta del BD, qualquie problema que venga a ocurrir con la maquina (travar-se o algo así) descuenta el producto del BD, se que es algo sencillo pero como estoy con tam poco tiempo no estoy podiendo solucionar, la idea es que no se descuente el producto del BD si la venta no esta salva. Solamente descontar la venta del Banco de Dato si la venta fue salva.
Para estas operaciones, normalmente se usan 2 soluciones, sino he entendido mal lo que necesitas:

(1) Transacciones; Realizar las operaciones utilizando transacciones de forma que todas las operaciones de la transacción se hacen como una única operación, o todas o ninguna. Esto tiene sentido cuando las operaciones se realizan en un corto espacio de tiempo. Creo que este no es tu caso, pues entiendo que el proceso de venta puede tardar un rato.

(2) ClientDataset, MemoryDataset o similar. Significa que realizar esa "venta" en memoria, no directamente sobre la Base de Datos. Al finalizar la venta es cuando (utilizando una transacción) se realizan TODAS las operaciones de golpe en la Base de Datos; La venta en sí y los movimientos sobre el stock. Hay varios componentes que te permiten realizar algo así; El TClientDataset que viene con Delphi, las RxLib traen uno llamado MemoryTable, y algunos otros que puedes encontrar sueltos. Es posible que se pueda realizar también utilizando una tabla temporal en la misma Base de Datos, aunque la idea de funcionamiento al final siempre es la misma. Realizar las operaciones en un "lugar intermedio" y luego al aceptar la venta, grabar todo en un sólo paso.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita