Trigger na TraElem aktualizujący atrybut

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

jajurko
Posty: 4
Rejestracja: 02 mar 2020, 14:18
Rola: Konsultant CDN XL

Trigger na TraElem aktualizujący atrybut

Post autor: jajurko »

Witajcie,

stworzyłem sobie w XL klasę atrybutu podpiętą pod pozycje obiektów handlowych. Atrybut jest liczbowy i automatyczny.
Teraz chce wypełnić ten atrybut wartością która jest iloczynem tre_ilosc oraz przelicznika pierwszej jednostki pomocniczej na karcie towarowej.

Stworzyłem więc na TraElem taki trigger

Kod: Zaznacz cały

Create TRIGGER [CDN].[IloscJMZ]
ON [CDN].[TraElem]
after update
AS
BEGIN
SET NOCOUNT on;
declare @gidObiNR int,  @GidOBITyp int,@GidOBIlp int

select @gidObiNR=I.tre_GIDNumer , @GidOBITyp=I.tre_GIDTyp, @GidOBILP=I.TrE_GIDLp  from inserted I

begin

update cdn.Atrybuty set Atr_Wartosc = 
(
select top 1 Case when twr_jm='PA' then Convert(decimal(10,4),isnull(tre_ilosc*(TwJ_PrzeliczM/TwJ_PrzeliczL),TrE_Ilosc)) else TrE_Ilosc end from cdn.Atrybuty
join cdn.TraElem on TrE_GIDNumer=Atr_ObiNumer AND TrE_GIDTyp=Atr_ObiTyp AND TrE_GIDLp=Atr_ObiLp and Atr_OBITyp in ( 2033, 2041 ,2037 ,2045 ,2001 ,2009, 2005 ,2013 ,2034 ,2042, 2035, 2043 , 2039, 2047, 1520, 1528, 1521 ,1529 ,1489 ,1497 ,1600,1603,1604 ,2036, 2044 ,1617 ,1616 ,2003 ,2004 ,1490 ,1498 ,1312 ,1824 ,1320 ,1832, 1624, 1625, 2000, 2002, 2008, 2010 ) AND Atr_OBILp<>0 and Atr_OBISubLp = 0
join cdn.TwrKarty on TrE_Twrnumer=twr_gidnumer
left join cdn.TwrJm on Twr_GIDNumer=TwJ_TwrNumer and TwJ_Pozycja=1 
where atr_AtKID=140 and TrE_GIDNumer=@gidObiNR and TrE_GIDTyp=@GidOBITyp and TrE_GIDLp=@GidOBIlp
)
where Atr_ObiNumer = @gidObiNR and Atr_ObiTyp=@GidOBITyp and Atr_ObiLp=@GidOBIlp and Atr_AtkId = 140

end
SET NOCOUNT OFF;

END
I tu mam mały problem.
Trigger działa ale tylko dla tre_gidlp=1 dla pozostałych pozycji dokumentu nic się nie wylicza.

Podpowiecie, gdzie popełniłem błąd?

kieszonkowy_trzepacz
Posty: 4
Rejestracja: 17 gru 2019, 21:33
Rola: Konsultant CDN XL
Wersja: 2019

Re: Trigger na TraElem aktualizujący atrybut

Post autor: kieszonkowy_trzepacz »

1
Ostatnio zmieniony 15 paź 2022, 14:37 przez kieszonkowy_trzepacz, łącznie zmieniany 1 raz.

jajurko
Posty: 4
Rejestracja: 02 mar 2020, 14:18
Rola: Konsultant CDN XL

Re: Trigger na TraElem aktualizujący atrybut

Post autor: jajurko »

No tak,
nie pomyślałem o tym.

Dzięki za pomoc

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Trigger na TraElem aktualizujący atrybut

Post autor: elmiq »

Nie ma potrzeby korzystania z żadnego kursora, ponieważ tylko zwiększy on czas wykonania wyzwalacza.

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

jajurko
Posty: 4
Rejestracja: 02 mar 2020, 14:18
Rola: Konsultant CDN XL

Re: Trigger na TraElem aktualizujący atrybut

Post autor: jajurko »

Raczej nie mam na tyle dużo transakcji by zastosowanie kursora miało jakiś większy wpływ na wydajność.

Ale z ciekawości jak można to było rozwiązać bez wykorzystania kursora?

ODPOWIEDZ