Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-01-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 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
Me da la impresión de que no estás usando correctamente las transacciones.
Parece que estés usando diferentes transacciones para ambas operaciones. Para comportarse como quieres (según he entendido la pregunta) debes asegurarte de que utilizas la misma transacción para ambas y de que no realizas el Commit o el Rollback hasta que no hayas finalizado ambas.
__________________
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
  #2  
Antiguo 21-01-2016
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 62
Poder: 24
Jack Va por buen camino
Mas explicación

Hola, la transacción empieza con la linea de venta y acaba con la linea de venta con un commitretaining. ( necesito conservar el contexto ).
Eso ocurre en el programa, en la base de datos ha dos triggers un before update y otro after update que actualizan la tabla de stocks.
Código SQL [-]
create or alter trigger trantes for LineasVentas as begin 
active before update 
update stocks
set ventastotales = coalesce(ventastotales,0) - Old.UnidadesVendidas
where codigostocks = old.codigolineadeventa
end
^
create or alter trigger trdespues fro LineasVentas as begin
active after update 
update stocks
set ventastotales = coalesce(ventastotales,0) + New.UnidadesVendidas
where codigostocks = new.codigolineadeventa
end

En la transación hay implicada una segunda tabla que es la de stocks, donde se guardan los totales de los movimientos por cada codigoarticulo, es decir va haciendo el stock a medida que va modificando lineas, también existe el trigger insert y delete con la misma estructura. Yo creo que la transaccion es única aunque se vean implicadas dos tablas. Para mi si la linea de ventas recoge la modificación obligatoriamente la tabla de stocks debe de hacer correctamente los dos updates. La transacción la inicia la linea de ventas y la acaba la linea de ventas.
La pregunta es porque este mecanismo no es seguro ?, en caso de fallo del update en la tabla de stocks debería también fallar la actualización de la tabla de lineas de ventas, esto es cierto. Lo que me ocurre es que no me actualiza el stock pero si acualiza bien la tabla de ventas. Utilizo los IBX de delphiXE2. LLevo años sin comprender este funcionamiento, a ver si alguien lo entiende y me lo puede explicar.
Gracias.
Responder Con Cita
  #3  
Antiguo 21-01-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Si no he entendido mal, si antes de actualizar las restas, y después de actualizar las sumas... te quedas igual que estabas
Responder Con Cita
  #4  
Antiguo 21-01-2016
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 62
Poder: 24
Jack Va por buen camino
Control Stock

Hola, en la linea de venta tengo 10 y modifico a 25. Es decir resto 10 ( old.unidadesventa), y sumo 20 ( new.unidadesventa ).
Gracias.
Responder Con Cita
  #5  
Antiguo 21-01-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Pero por qué restas lo que hay, si ya estarán contadas?
Responder Con Cita
  #6  
Antiguo 21-01-2016
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 62
Poder: 24
Jack Va por buen camino
Control Stock

La última pregunta no la entiendo, el hecho de primero restar y luego sumar es porque se puede cambia el codigo de articulo de la linea de venta si el articulo AA tenia 10 unidades, y modifico al articulo BB 20 unidades. la resta deja los AA en 0 y la suma pone los 25 en BB que es lo que tiene que haber.
Gracias.
Responder Con Cita
  #7  
Antiguo 21-01-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
El stock se modifica cuando se compra y cuando se vende. Además se puede hacer un inventario manual para ajustarlo por posibles problemas, errores, etc.
Si compro, sumo al stock.
Si vendo, resto del stock.
Si hago inventario, pongo una cantidad fija.
No entiendo lo que dices de pasar stock de AA a BB. ¿Pasas 3 libros de matemáticas a 5 lápices de colores?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Control Stock Simple mantraxer21 Varios 7 21-03-2014 22:20:06
Control de Stock y Precios de Ventas cmm07 Varios 6 14-01-2012 03:32:29
control de stock en delphi ingmichel Varios 5 01-08-2007 23:54:40
Control de stock por almacenes. Producto77 SQL 29 26-02-2007 15:51:30


La franja horaria es GMT +2. Ahora son las 02:36:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi