Problema Trigger....Mi no entender...

09/03/2005 - 17:07 por K | Informe spam
Ante todo Salu2 y gracias por leer mi mensaje
Les comento mi problema

Tengo este trigger

CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM nvarchar(1)

SELECT Cantidad, CodigoArticulo
INTO #Agregados
FROM Inserted

Select @TipoM = Documento.TipoMovimiento
from Inserted INNER join Documento ON
Inserted.NumeroMovimiento = Documento.NumeroMovimiento

IF @TipoM='D' or @TipoM='I' or @TipoM='J'
BEGIN
update dbo.Articulo
set dbo.Articulo.Stock= dbo.Articulo.Stock + Agregados.cantidad
from #Agregados Agregados inner join dbo.Articulo on
Agregados.CodigoArticulo
Articulo.CodigoArticulo
END
ELSE IF @TipoM='S'
BEGIN
update dbo.Articulo
set dbo.Articulo.Stock= dbo.Articulo.Stock - Agregados.cantidad
from #Agregados Agregados inner join dbo.Articulo on
Agregados.CodigoArticulo
Articulo.CodigoArticulo
END

Tengo uno igual para DELETE con la diferencia que cambian los signo en las
operaciones
para cada una de las condiciones, bueno ahora vamos a trabajar con otro
almacen entonces
hice este cambio ...

CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)

SELECT Cantidad, CodigoArticulo
INTO #Agregados
FROM Inserted

SELECT @TipoM Documento.TipoMovimiento,@Destino=dbo.Documento.AlmacenDestino
FROM Inserted INNER join Documento ON
Inserted.NumeroMovimiento = Documento.NumeroMovimiento

IF @TipoM='D' or @TipoM='J'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock + Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END

/*La salida produce disminucion en el stock de la tabla Articulos */
ELSE IF @TipoM='S'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock - Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END

/*Este es para cuando se inserte un ingreso en el almacen principal*/
ELSE IF @TipoM=' I ' AND @Destino='TS'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock + Aqregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END

/*Este es para cuando se inserte un ingreso para el otra almacen*/
ELSE IF @TipoM=' I ' AND @Destino='TC'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.StockInpersa = dbo.Articulo.StockInpersa +
Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END

Cuando hago un Ingreso desde el programa no me da ningun mensaje
de error pero cuando busco en la tabla no esta el Movimiento que agrege, y
cuando hago
una Salida y agrego los Detalles me sale el mensaje de Restriccion de la
tabla que no pueden
existir movimientos repetidos... eso es lo que no entiendo mi trigger me
parece que no tiene
nada especial

Probe quitando los ultimos dos ELSE IF y no me da problema pero por eso sigo
sin enteder???

Y mi tabla de Documento tiene una relacion con la tabla Movimientos de uno a
muchos...

Si necesitan algun tipo mas de informacion no duden en pedirmelo

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
09/03/2005 - 18:03 | Informe spam
Una cosa he notado y es que en el primer trigger usas:

IF @TipoM='D' or @TipoM='I' or @TipoM='J'



fijate en el insert (@TipoM='I'), mientras en el segundo usas:

ELSE IF @TipoM=' I ' AND @Destino='TS'



La cadena usada es diferente, tiene espacio al principio y al final
(@TipoM=' I ').

Otra cosa, tu trigger esta suponiendo que no habra mas de una fila para un
mismo articulo en la misma trasaccion. De no ser asi, en algun momento
fallara. Ve si esta version te es de alguna ayuda.

CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)

UPDATE
a
SET
a.Stock = a.Stock + isnull((select sum(i.Cantidad) from inserted as i INNER
join Documento ON i.NumeroMovimiento = Documento.NumeroMovimiento and
(Documento.TipoMovimiento in ('D', 'J') or (Documento.TipoMovimiento = ' I '
and Documento.AlmacenDestino = 'TS')) where i.CodigoArticulo =
a.CodigoArticulo), 0)
from
dbo.Articulo as a
where
exists (select * from inserted as i INNER join Documento ON
i.NumeroMovimiento = Documento.NumeroMovimiento and (Documento.TipoMovimiento
in ('D', 'J') or (Documento.TipoMovimiento = ' I ' and
Documento.AlmacenDestino = 'TS')) where i.CodigoArticulo = a.CodigoArticulo)

UPDATE
a
SET
a.Stock = a.Stock - isnull((select sum(i.Cantidad) from inserted as i INNER
join Documento ON i.NumeroMovimiento = Documento.NumeroMovimiento and
Documento.TipoMovimiento = 'S' where i.CodigoArticulo = a.CodigoArticulo), 0)
from
dbo.Articulo as a
where
exists (select * from inserted as i INNER join Documento ON
i.NumeroMovimiento = Documento.NumeroMovimiento and Documento.TipoMovimiento
= 'S' where i.CodigoArticulo = a.CodigoArticulo)

UPDATE
a
SET
a.StockInpersa = a.StockInpersa + isnull((select sum(i.Cantidad) from
inserted as i INNER join Documento ON i.NumeroMovimiento =
Documento.NumeroMovimiento and Documento.TipoMovimiento = ' I ' and
Documento.AlmacenDestino = 'TC' where i.CodigoArticulo = a.CodigoArticulo), 0)
from
dbo.Articulo as a
where
exists (select sum(i.Cantidad) from inserted as i INNER join Documento ON
i.NumeroMovimiento = Documento.NumeroMovimiento and Documento.TipoMovimiento
= ' I ' and Documento.AlmacenDestino = 'TC' where i.CodigoArticulo =
a.CodigoArticulo)
go


AMB



"" wrote:

Ante todo Salu2 y gracias por leer mi mensaje
Les comento mi problema

Tengo este trigger

CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM nvarchar(1)

SELECT Cantidad, CodigoArticulo
INTO #Agregados
FROM Inserted

Select @TipoM = Documento.TipoMovimiento
from Inserted INNER join Documento ON
Inserted.NumeroMovimiento = Documento.NumeroMovimiento

IF @TipoM='D' or @TipoM='I' or @TipoM='J'
BEGIN
update dbo.Articulo
set dbo.Articulo.Stock= dbo.Articulo.Stock + Agregados.cantidad
from #Agregados Agregados inner join dbo.Articulo on
Agregados.CodigoArticulo >
Articulo.CodigoArticulo
END
ELSE IF @TipoM='S'
BEGIN
update dbo.Articulo
set dbo.Articulo.Stock= dbo.Articulo.Stock - Agregados.cantidad
from #Agregados Agregados inner join dbo.Articulo on
Agregados.CodigoArticulo >
Articulo.CodigoArticulo
END

Tengo uno igual para DELETE con la diferencia que cambian los signo en las
operaciones
para cada una de las condiciones, bueno ahora vamos a trabajar con otro
almacen entonces
hice este cambio ...

CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)

SELECT Cantidad, CodigoArticulo
INTO #Agregados
FROM Inserted

SELECT @TipoM > Documento.TipoMovimiento,@Destino=dbo.Documento.AlmacenDestino
FROM Inserted INNER join Documento ON
Inserted.NumeroMovimiento = Documento.NumeroMovimiento

IF @TipoM='D' or @TipoM='J'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock + Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo > Articulo.CodigoArticulo
END

/*La salida produce disminucion en el stock de la tabla Articulos */
ELSE IF @TipoM='S'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock - Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo > Articulo.CodigoArticulo
END

/*Este es para cuando se inserte un ingreso en el almacen principal*/
ELSE IF @TipoM=' I ' AND @Destino='TS'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock + Aqregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo > Articulo.CodigoArticulo
END

/*Este es para cuando se inserte un ingreso para el otra almacen*/
ELSE IF @TipoM=' I ' AND @Destino='TC'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.StockInpersa = dbo.Articulo.StockInpersa +
Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo > Articulo.CodigoArticulo
END

Cuando hago un Ingreso desde el programa no me da ningun mensaje
de error pero cuando busco en la tabla no esta el Movimiento que agrege, y
cuando hago
una Salida y agrego los Detalles me sale el mensaje de Restriccion de la
tabla que no pueden
existir movimientos repetidos... eso es lo que no entiendo mi trigger me
parece que no tiene
nada especial

Probe quitando los ultimos dos ELSE IF y no me da problema pero por eso sigo
sin enteder???

Y mi tabla de Documento tiene una relacion con la tabla Movimientos de uno a
muchos...

Si necesitan algun tipo mas de informacion no duden en pedirmelo

Muchas gracias.



Respuesta Responder a este mensaje
#2 K
09/03/2005 - 18:26 | Informe spam
Por lo de los espacios sorry es un problema mio que quise que se
viera bien la I en la pregunta...no te fijes ...jejeje

Para la segunda observacion que me haces...estas en lo correcto
no puede repetirse los articulos en la transaccion ya que el campo
clave de la tabla Movimientos es ID y CodigoArticulo

Pero lo que no entiendo que solo aumentado esos dos ultimos
ELSE IF con esas condiciones que no tienen nada especial
me de tanto problema...

"Alejandro Mesa" escribió en el
mensaje news:
Una cosa he notado y es que en el primer trigger usas:

> IF @TipoM='D' or @TipoM='I' or @TipoM='J'

fijate en el insert (@TipoM='I'), mientras en el segundo usas:

> ELSE IF @TipoM=' I ' AND @Destino='TS'

La cadena usada es diferente, tiene espacio al principio y al final
(@TipoM=' I ').

Otra cosa, tu trigger esta suponiendo que no habra mas de una fila para un
mismo articulo en la misma trasaccion. De no ser asi, en algun momento
fallara. Ve si esta version te es de alguna ayuda.

CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)

UPDATE
a
SET
a.Stock = a.Stock + isnull((select sum(i.Cantidad) from inserted as i


INNER
join Documento ON i.NumeroMovimiento = Documento.NumeroMovimiento and
(Documento.TipoMovimiento in ('D', 'J') or (Documento.TipoMovimiento = ' I


'
and Documento.AlmacenDestino = 'TS')) where i.CodigoArticulo > a.CodigoArticulo), 0)
from
dbo.Articulo as a
where
exists (select * from inserted as i INNER join Documento ON
i.NumeroMovimiento = Documento.NumeroMovimiento and


(Documento.TipoMovimiento
in ('D', 'J') or (Documento.TipoMovimiento = ' I ' and
Documento.AlmacenDestino = 'TS')) where i.CodigoArticulo a.CodigoArticulo)

UPDATE
a
SET
a.Stock = a.Stock - isnull((select sum(i.Cantidad) from inserted as i


INNER
join Documento ON i.NumeroMovimiento = Documento.NumeroMovimiento and
Documento.TipoMovimiento = 'S' where i.CodigoArticulo = a.CodigoArticulo),


0)
from
dbo.Articulo as a
where
exists (select * from inserted as i INNER join Documento ON
i.NumeroMovimiento = Documento.NumeroMovimiento and


Documento.TipoMovimiento
= 'S' where i.CodigoArticulo = a.CodigoArticulo)

UPDATE
a
SET
a.StockInpersa = a.StockInpersa + isnull((select sum(i.Cantidad) from
inserted as i INNER join Documento ON i.NumeroMovimiento > Documento.NumeroMovimiento and Documento.TipoMovimiento = ' I ' and
Documento.AlmacenDestino = 'TC' where i.CodigoArticulo a.CodigoArticulo), 0)
from
dbo.Articulo as a
where
exists (select sum(i.Cantidad) from inserted as i INNER join Documento ON
i.NumeroMovimiento = Documento.NumeroMovimiento and


Documento.TipoMovimiento
= ' I ' and Documento.AlmacenDestino = 'TC' where i.CodigoArticulo > a.CodigoArticulo)
go


AMB



"" wrote:

> Ante todo Salu2 y gracias por leer mi mensaje
> Les comento mi problema
>
> Tengo este trigger
>
> CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
> FOR INSERT
> AS
> DECLARE @TipoM nvarchar(1)
>
> SELECT Cantidad, CodigoArticulo
> INTO #Agregados
> FROM Inserted
>
> Select @TipoM = Documento.TipoMovimiento
> from Inserted INNER join Documento ON
> Inserted.NumeroMovimiento = Documento.NumeroMovimiento
>
> IF @TipoM='D' or @TipoM='I' or @TipoM='J'
> BEGIN
> update dbo.Articulo
> set dbo.Articulo.Stock= dbo.Articulo.Stock + Agregados.cantidad
> from #Agregados Agregados inner join dbo.Articulo on
> Agregados.CodigoArticulo > >
> Articulo.CodigoArticulo
> END
> ELSE IF @TipoM='S'
> BEGIN
> update dbo.Articulo
> set dbo.Articulo.Stock= dbo.Articulo.Stock - Agregados.cantidad
> from #Agregados Agregados inner join dbo.Articulo on
> Agregados.CodigoArticulo > >
> Articulo.CodigoArticulo
> END
>
> Tengo uno igual para DELETE con la diferencia que cambian los signo en


las
> operaciones
> para cada una de las condiciones, bueno ahora vamos a trabajar con otro
> almacen entonces
> hice este cambio ...
>
> CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
> FOR INSERT
> AS
> DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)
>
> SELECT Cantidad, CodigoArticulo
> INTO #Agregados
> FROM Inserted
>
> SELECT @TipoM > > Documento.TipoMovimiento,@Destino=dbo.Documento.AlmacenDestino
> FROM Inserted INNER join Documento ON
> Inserted.NumeroMovimiento = Documento.NumeroMovimiento
>
> IF @TipoM='D' or @TipoM='J'
> BEGIN
> UPDATE dbo.Articulo
> SET dbo.Articulo.Stock = dbo.Articulo.Stock + Agregados.Cantidad
> FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> Agregados.CodigoArticulo > > Articulo.CodigoArticulo
> END
>
> /*La salida produce disminucion en el stock de la tabla Articulos */
> ELSE IF @TipoM='S'
> BEGIN
> UPDATE dbo.Articulo
> SET dbo.Articulo.Stock = dbo.Articulo.Stock - Agregados.Cantidad
> FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> Agregados.CodigoArticulo > > Articulo.CodigoArticulo
> END
>
> /*Este es para cuando se inserte un ingreso en el almacen principal*/
> ELSE IF @TipoM=' I ' AND @Destino='TS'
> BEGIN
> UPDATE dbo.Articulo
> SET dbo.Articulo.Stock = dbo.Articulo.Stock + Aqregados.Cantidad
> FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> Agregados.CodigoArticulo > > Articulo.CodigoArticulo
> END
>
> /*Este es para cuando se inserte un ingreso para el otra almacen*/
> ELSE IF @TipoM=' I ' AND @Destino='TC'
> BEGIN
> UPDATE dbo.Articulo
> SET dbo.Articulo.StockInpersa = dbo.Articulo.StockInpersa +
> Agregados.Cantidad
> FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> Agregados.CodigoArticulo > > Articulo.CodigoArticulo
> END
>
> Cuando hago un Ingreso desde el programa no me da ningun mensaje
> de error pero cuando busco en la tabla no esta el Movimiento que agrege,


y
> cuando hago
> una Salida y agrego los Detalles me sale el mensaje de Restriccion de la
> tabla que no pueden
> existir movimientos repetidos... eso es lo que no entiendo mi trigger me
> parece que no tiene
> nada especial
>
> Probe quitando los ultimos dos ELSE IF y no me da problema pero por eso


sigo
> sin enteder???
>
> Y mi tabla de Documento tiene una relacion con la tabla Movimientos de


uno a
> muchos...
>
> Si necesitan algun tipo mas de informacion no duden en pedirmelo
>
> Muchas gracias.
>
>
>
Respuesta Responder a este mensaje
#3 Alejandro Mesa
09/03/2005 - 18:53 | Informe spam
Una sugerencia, usa la tabla "inserted" en vez de copiarla a una tabla
temporal. La sentencia SELECT ... INTO consume tiempo y recursos, ademas si
no vas a crear ningun indice en la tabla temporal entonces no es de mucha
ayuda.

Como pudieramos reproducir el problema en nuestras maquinas?


AMB


"" wrote:

Por lo de los espacios sorry es un problema mio que quise que se
viera bien la I en la pregunta...no te fijes ...jejeje

Para la segunda observacion que me haces...estas en lo correcto
no puede repetirse los articulos en la transaccion ya que el campo
clave de la tabla Movimientos es ID y CodigoArticulo

Pero lo que no entiendo que solo aumentado esos dos ultimos
ELSE IF con esas condiciones que no tienen nada especial
me de tanto problema...

"Alejandro Mesa" escribió en el
mensaje news:
> Una cosa he notado y es que en el primer trigger usas:
>
> > IF @TipoM='D' or @TipoM='I' or @TipoM='J'
>
> fijate en el insert (@TipoM='I'), mientras en el segundo usas:
>
> > ELSE IF @TipoM=' I ' AND @Destino='TS'
>
> La cadena usada es diferente, tiene espacio al principio y al final
> (@TipoM=' I ').
>
> Otra cosa, tu trigger esta suponiendo que no habra mas de una fila para un
> mismo articulo en la misma trasaccion. De no ser asi, en algun momento
> fallara. Ve si esta version te es de alguna ayuda.
>
> CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
> FOR INSERT
> AS
> DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)
>
> UPDATE
> a
> SET
> a.Stock = a.Stock + isnull((select sum(i.Cantidad) from inserted as i
INNER
> join Documento ON i.NumeroMovimiento = Documento.NumeroMovimiento and
> (Documento.TipoMovimiento in ('D', 'J') or (Documento.TipoMovimiento = ' I
'
> and Documento.AlmacenDestino = 'TS')) where i.CodigoArticulo > > a.CodigoArticulo), 0)
> from
> dbo.Articulo as a
> where
> exists (select * from inserted as i INNER join Documento ON
> i.NumeroMovimiento = Documento.NumeroMovimiento and
(Documento.TipoMovimiento
> in ('D', 'J') or (Documento.TipoMovimiento = ' I ' and
> Documento.AlmacenDestino = 'TS')) where i.CodigoArticulo > a.CodigoArticulo)
>
> UPDATE
> a
> SET
> a.Stock = a.Stock - isnull((select sum(i.Cantidad) from inserted as i
INNER
> join Documento ON i.NumeroMovimiento = Documento.NumeroMovimiento and
> Documento.TipoMovimiento = 'S' where i.CodigoArticulo = a.CodigoArticulo),
0)
> from
> dbo.Articulo as a
> where
> exists (select * from inserted as i INNER join Documento ON
> i.NumeroMovimiento = Documento.NumeroMovimiento and
Documento.TipoMovimiento
> = 'S' where i.CodigoArticulo = a.CodigoArticulo)
>
> UPDATE
> a
> SET
> a.StockInpersa = a.StockInpersa + isnull((select sum(i.Cantidad) from
> inserted as i INNER join Documento ON i.NumeroMovimiento > > Documento.NumeroMovimiento and Documento.TipoMovimiento = ' I ' and
> Documento.AlmacenDestino = 'TC' where i.CodigoArticulo > a.CodigoArticulo), 0)
> from
> dbo.Articulo as a
> where
> exists (select sum(i.Cantidad) from inserted as i INNER join Documento ON
> i.NumeroMovimiento = Documento.NumeroMovimiento and
Documento.TipoMovimiento
> = ' I ' and Documento.AlmacenDestino = 'TC' where i.CodigoArticulo > > a.CodigoArticulo)
> go
>
>
> AMB
>
>
>
> "" wrote:
>
> > Ante todo Salu2 y gracias por leer mi mensaje
> > Les comento mi problema
> >
> > Tengo este trigger
> >
> > CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
> > FOR INSERT
> > AS
> > DECLARE @TipoM nvarchar(1)
> >
> > SELECT Cantidad, CodigoArticulo
> > INTO #Agregados
> > FROM Inserted
> >
> > Select @TipoM = Documento.TipoMovimiento
> > from Inserted INNER join Documento ON
> > Inserted.NumeroMovimiento = Documento.NumeroMovimiento
> >
> > IF @TipoM='D' or @TipoM='I' or @TipoM='J'
> > BEGIN
> > update dbo.Articulo
> > set dbo.Articulo.Stock= dbo.Articulo.Stock + Agregados.cantidad
> > from #Agregados Agregados inner join dbo.Articulo on
> > Agregados.CodigoArticulo > > >
> > Articulo.CodigoArticulo
> > END
> > ELSE IF @TipoM='S'
> > BEGIN
> > update dbo.Articulo
> > set dbo.Articulo.Stock= dbo.Articulo.Stock - Agregados.cantidad
> > from #Agregados Agregados inner join dbo.Articulo on
> > Agregados.CodigoArticulo > > >
> > Articulo.CodigoArticulo
> > END
> >
> > Tengo uno igual para DELETE con la diferencia que cambian los signo en
las
> > operaciones
> > para cada una de las condiciones, bueno ahora vamos a trabajar con otro
> > almacen entonces
> > hice este cambio ...
> >
> > CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
> > FOR INSERT
> > AS
> > DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)
> >
> > SELECT Cantidad, CodigoArticulo
> > INTO #Agregados
> > FROM Inserted
> >
> > SELECT @TipoM > > > Documento.TipoMovimiento,@Destino=dbo.Documento.AlmacenDestino
> > FROM Inserted INNER join Documento ON
> > Inserted.NumeroMovimiento = Documento.NumeroMovimiento
> >
> > IF @TipoM='D' or @TipoM='J'
> > BEGIN
> > UPDATE dbo.Articulo
> > SET dbo.Articulo.Stock = dbo.Articulo.Stock + Agregados.Cantidad
> > FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> > Agregados.CodigoArticulo > > > Articulo.CodigoArticulo
> > END
> >
> > /*La salida produce disminucion en el stock de la tabla Articulos */
> > ELSE IF @TipoM='S'
> > BEGIN
> > UPDATE dbo.Articulo
> > SET dbo.Articulo.Stock = dbo.Articulo.Stock - Agregados.Cantidad
> > FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> > Agregados.CodigoArticulo > > > Articulo.CodigoArticulo
> > END
> >
> > /*Este es para cuando se inserte un ingreso en el almacen principal*/
> > ELSE IF @TipoM=' I ' AND @Destino='TS'
> > BEGIN
> > UPDATE dbo.Articulo
> > SET dbo.Articulo.Stock = dbo.Articulo.Stock + Aqregados.Cantidad
> > FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> > Agregados.CodigoArticulo > > > Articulo.CodigoArticulo
> > END
> >
> > /*Este es para cuando se inserte un ingreso para el otra almacen*/
> > ELSE IF @TipoM=' I ' AND @Destino='TC'
> > BEGIN
> > UPDATE dbo.Articulo
> > SET dbo.Articulo.StockInpersa = dbo.Articulo.StockInpersa +
> > Agregados.Cantidad
> > FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
> > Agregados.CodigoArticulo > > > Articulo.CodigoArticulo
> > END
> >
> > Cuando hago un Ingreso desde el programa no me da ningun mensaje
> > de error pero cuando busco en la tabla no esta el Movimiento que agrege,
y
> > cuando hago
> > una Salida y agrego los Detalles me sale el mensaje de Restriccion de la
> > tabla que no pueden
> > existir movimientos repetidos... eso es lo que no entiendo mi trigger me
> > parece que no tiene
> > nada especial
> >
> > Probe quitando los ultimos dos ELSE IF y no me da problema pero por eso
sigo
> > sin enteder???
> >
> > Y mi tabla de Documento tiene una relacion con la tabla Movimientos de
uno a
> > muchos...
> >
> > Si necesitan algun tipo mas de informacion no duden en pedirmelo
> >
> > Muchas gracias.
> >
> >
> >



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida