Actualización existencia

16/08/2008 - 15:25 por German Lugo | Informe spam
Apreciados amigos:

Acudo a la experiencia del grupo para solucionar un problema de
desencadenate de inserción que me ha tenido en jaque por varias horas.

Deseo crear un desencadenante de inserción en la tabla de movimiento de
inventarios que me actualice la tabla de existencias según entrada o salida
de productos, por ejemplo compra o venta.

Tengo además una tabla de tipos de movimiento con un campo bit que indica si
el movimiento es de entrada o salida. En la inserción en la tabla de
movimientos se inserta el campo de tipo de movimiento.

En el momento tengo la suiguiente sentencia que incrementa o disminuye la
existencia segun se cambie el signo posterior a "=mercia.exist"

UPDATE mercia

SET mercia.exist = mercia.exist "+"

(SELECT inserted.cantidad FROM inserted AS inserted)

FROM mercia INNER JOIN inserted

ON mercia.codigo = inserted.codigo

Lo que deseo es poder relacionar con la tabla de tipo de movimiento para
poder incrementar o disminuir la existencia según el tipo de movimiento.

Agradezco anticipadame la valiosa cooperación que puedan brindarme en este
caso.


Best regards,

GERMAN LUGO
PROVENET LTDA. CI
ADDRESS CALLE 13 No. 58-42
BOGOTA D.C. - COLOMBIA
PHONE : 57 1 4145832
PHONEFAX : 57 1 4467880
YAHOOMAIL :german_provenetci@yahoo.com
WEBSITE :www.provenetci.com
 

Leer las respuestas

#1 Alejandro Mesa
17/08/2008 - 01:08 | Informe spam
German Lugo,

Suponiendo que [tipo] = 0 significa entrada y 1 significa salida, entonces
trata:

update mercia
set exist = exist + (
select sum(case when i.tipo = 0 then 1 else -1 end * i.cantidad)
from inserted i
where i.codigo = mercia.codigo
)
where exists (
select *
from inserted as i
where i.codigo = mercia.codigo
)

Tambien puedes usar:

update a
set a.exist = a.exist + b.saldo
from mercia as a inner join
(
select i.codigo, sum(case when i.tipo = 0 then 1 else -1 end * i.cantidad)
as saldo
from inserted as i
group by i.codigo
) as b on a.codigo = b.codigo



AMB



"German Lugo" wrote:

Apreciados amigos:

Acudo a la experiencia del grupo para solucionar un problema de
desencadenate de inserción que me ha tenido en jaque por varias horas.

Deseo crear un desencadenante de inserción en la tabla de movimiento de
inventarios que me actualice la tabla de existencias según entrada o salida
de productos, por ejemplo compra o venta.

Tengo además una tabla de tipos de movimiento con un campo bit que indica si
el movimiento es de entrada o salida. En la inserción en la tabla de
movimientos se inserta el campo de tipo de movimiento.

En el momento tengo la suiguiente sentencia que incrementa o disminuye la
existencia segun se cambie el signo posterior a "=mercia.exist"

UPDATE mercia

SET mercia.exist = mercia.exist "+"

(SELECT inserted.cantidad FROM inserted AS inserted)

FROM mercia INNER JOIN inserted

ON mercia.codigo = inserted.codigo

Lo que deseo es poder relacionar con la tabla de tipo de movimiento para
poder incrementar o disminuir la existencia según el tipo de movimiento.

Agradezco anticipadame la valiosa cooperación que puedan brindarme en este
caso.


Best regards,

GERMAN LUGO
PROVENET LTDA. CI
ADDRESS CALLE 13 No. 58-42
BOGOTA D.C. - COLOMBIA
PHONE : 57 1 4145832
PHONEFAX : 57 1 4467880
YAHOOMAIL :
WEBSITE :www.provenetci.com




Preguntas similares