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

Preguntas similare

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









Respuesta Responder a este mensaje
#2 Susana
18/11/2003 - 09:22 | Informe spam
hola,

primero hago el select y luego el update, pq entre medias, hago bastantes
llamadas a funciones y demás, y no quería tener un update demasiado
complejo.

No se, el tema está en que al insertar registros manualmente todo funciona,
pero al insertarlos desde un select:

insert into t_lineas(campo1, campo2, campo3,...) values
select ...

entonces esto si dispara el trigger, pero a la hora de recoger los datos de
inserted es como si tomara los datos de una línea totalmente en blanco...
porqué????

gracias
"Accotto Maximiliano D." escribió en el
mensaje news:
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
>
>
>
>
>
>
>
>
>


Respuesta Responder a este mensaje
#3 Accotto Maximiliano D.
18/11/2003 - 13:25 | Informe spam
Susana!! cuando vos decis registros manualmente te referis a insertar un
solo registro?


Susana es que esto: select @descompte=descompte, @unitats=unitats,
> > @basei_brut=(unitats*preu_unitari_brut),
> > @w_preuunitari_brut=preu_unitari_brut from inserted



solo trae un solo valor!! porque son variables!! por eso te decia no no
hagas esto, sino q dentro de tu update lo pongas.

Asi como esta el codigo solo al insertar un registro te funcionaria y si vos
haces un insert Select estas insertando varios registros.

Me explico?

Un saludo


Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

" Susana" escribió en el mensaje
news:O$
hola,

primero hago el select y luego el update, pq entre medias, hago bastantes
llamadas a funciones y demás, y no quería tener un update demasiado
complejo.

No se, el tema está en que al insertar registros manualmente todo


funciona,
pero al insertarlos desde un select:

insert into t_lineas(campo1, campo2, campo3,...) values
select ...

entonces esto si dispara el trigger, pero a la hora de recoger los datos


de
inserted es como si tomara los datos de una línea totalmente en blanco...
porqué????

gracias
"Accotto Maximiliano D." escribió en


el
mensaje news:
> 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
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>


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