pq no me va...

17/11/2003 - 21:41 por Tolo | Informe spam
hola,

tengo una tabla de líneas de documentos en la cual tengo un desencadenador
que me calcula la línea. Pues bién, el desencadenador es como:

CREATE TRIGGER Control_stock_linea ON dbo.T_LiniesDocument
FOR INSERT, UPDATE
AS

declare @basei_net Imports, @basei_brut Imports, @unitats quantitats ...

select @descompte=descompte, @unitats=unitats,
@basei_brut=(unitats*preu_unitari_brut),
@w_preuunitari_brut=preu_unitari_brut from inserted

update T_liniesDocument
set preu_unitari_net=@w_preuunitari_net, -- preus unitaris
preu_unitari_brut=@w_preuunitari_brut,
descompte_unitari = @w_preuunitari_brut-@w_preuunitari_net,
total_descompte= @basei_brut - @basei_net, -- imports descompte
stock=inserted.unitats*@r_stock,
total_bi_brut = @basei_brut, total_bi_net = @basei_net,
impost1 = @r_impost1 , impost2=@r_impost2 , --impostos
total_linea = @basei_net+@r_impost1+@r_impost2,
cost_unitari = @w_pmpc,
marge_unitari = @w_preuunitari_net-@w_pmpc, -- marges unitaris
cost_total = @w_pmpc*@unitats,
marge_total = @basei_net - (@w_pmpc*@unitats) -- marges totals
from T_liniesDocument inner join inserted on
inserted.id_linea=T_liniesDocument.id_linea


(he pegado una parte del código, la parte q falta son definición de
variables y cálculos)

Pues bien, cuando inserto manualmente líneas todo se calcula, pero al
insertarlas a través de un select me ejecuta el trigger, pero en el select
donde tomo los datos, me lo toma como si el registro estuviera
totalmente en blanco, porqué?????????????????

alguien me sabe decir porqué

gracias
 

Leer las respuestas

#1 Accotto Maximiliano D.
17/11/2003 - 21:48 | Informe spam
Hola amigo tolo!! una consulta? porque no usas directamente el update? para
q haces el select?

ej:

update tabla set campo = blabla bla
from tablas joins wheres etc?

me explico?

aca tendrias q poner la tabla inserted por ej:

update facturas_ln set total=inserted.precio_unitario * inserted.cantidad
from facturas_ln inner join inserted on facturas_ln.id = inserted.id

aca supongo q el trigger esta hecho sobre la tabla facturas_ln!!

Un saludo


Accotto Maximiliano Damian
" Tolo" escribió en el mensaje
news:
hola,

tengo una tabla de líneas de documentos en la cual tengo un desencadenador
que me calcula la línea. Pues bién, el desencadenador es como:

CREATE TRIGGER Control_stock_linea ON dbo.T_LiniesDocument
FOR INSERT, UPDATE
AS

declare @basei_net Imports, @basei_brut Imports, @unitats quantitats


...

select @descompte=descompte, @unitats=unitats,
@basei_brut=(unitats*preu_unitari_brut),
@w_preuunitari_brut=preu_unitari_brut from inserted

update T_liniesDocument
set preu_unitari_net=@w_preuunitari_net, -- preus unitaris
preu_unitari_brut=@w_preuunitari_brut,
descompte_unitari = @,
total_descompte= @basei_brut - @basei_net, -- imports descompte
stock=inserted.unitats*@r_stock,
total_bi_brut = @basei_brut, total_bi_net = @basei_net,
impost1 = @r_impost1 , impost2=@r_impost2 , --impostos
total_linea = @basei_net+@r_impost1+@r_impost2,
cost_unitari = @w_pmpc,
marge_unitari = @, -- marges unitaris
cost_total = @w_pmpc*@unitats,
marge_total = @basei_net - (@w_pmpc*@unitats) -- marges totals
from T_liniesDocument inner join inserted on
inserted.id_linea=T_liniesDocument.id_linea


(he pegado una parte del código, la parte q falta son definición de
variables y cálculos)

Pues bien, cuando inserto manualmente líneas todo se calcula, pero al
insertarlas a través de un select me ejecuta el trigger, pero en el select
donde tomo los datos, me lo toma como si el registro estuviera
totalmente en blanco, porqué?????????????????

alguien me sabe decir porqué

gracias









Preguntas similares