Michał Z.

Michał Z. Młodszy
administrator IT w
2x3 S.A.

Temat: Comarch CDN XL - TRIGGER pobierający numer otwartego...

Witam,

Idea jest taka aby po utworzeniu WZ , dodaniu pozycji zamknięciu i otwarciu dokumentu ponownie w Atrybucie dokumentu , [waga] uzupełniała się automatycznie sumując wagi poszczególnych pozycji.

Jak należy stworzyć triggera aby pobierał T.TrN_GIDNumer uruchomionego dokumentu (otwartego/modyfikowanego)

W przypadku gdybyśmy mieli numer dokumentu, SQL sumujący wagi wyglądałby następująco:

(SELECT

SUM(E.TrE_Ilosc * TK.Twr_Waga )
FROM [BAZAXL].[CDN].[TraNag] as T
join [BAZAXL].[CDN].TraElem as E on
T.TrN_GIDNumer = E.TrE_GIDNumer
inner join [BAZAXL].[CDN].TwrKarty as TK on E.TrE_TwrNumer = TK.Twr_GIDNumer
where T.TrN_GIDNumer= ???Jak wstawić tu numer otwartego dokumentu
)

konto usunięte

Temat: Comarch CDN XL - TRIGGER pobierający numer otwartego...


Witaj,

Czy użycie dużej hydry nie wchodzi w grę ? Jeśli ma to być trigger proponuje przeliczanie po zapisie elementu dokumentu (TraElem)..cos w ten desen


CREATE TRIGGER CDN.Oblicz
AFTER INSERT,UPDATE
ON CDN.TraElem
BEGIN
DECLARE @GIDNUMER INT
SELECT @GIDNUMER = TrN_GIDNumer FROM inserted
DECLARE @WAGA DECIMAL(11,4)
-- TWOJE ZAPYATNIE SUMUJACE WSZYSTKIE POZYCJE Z TRAELEM
SELECT
@WAGA = SUM(WARTOSC)
FROM
CDN.TraNag
JOIN CDN.TraElem ON TrN_GIDNumer = TrE_GIDNumer AND TrN_GIDTyp = TrE_GIDTyp
WHERE
TrN_GIDNumer = @GIDNUMER
AND TrN_GIDTyp = --wz typ, nie pamietam;)
-- UPDATE ATRYBUTU
UPDATE Atrybuty
SET
AtR_Wartosc = CAST(@WAGA AS NVARCHAR(1O))
FROM
CDN.Atrybuty
JOIN CDN.AtrybutyKlasy = AtR_AtkId = AtK_ID
WHERE
AtR_OBINUMER = @GIDNUMER
AND ATR_OBITYP = @GIDTYP
AND AtK_Nazwa = 'TWOJA KLASA'
END



pzdr,
m

Michał Z.

Michał Z. Młodszy
administrator IT w
2x3 S.A.

Temat: Comarch CDN XL - TRIGGER pobierający numer otwartego...

Witaj,

dużej hydry nie zastanawiałem się nad tym, jakie są zalety proponowanego przez Ciebie rozwiązania ?

Pozdrawiam
mz

konto usunięte

Temat: Comarch CDN XL - TRIGGER pobierający numer otwartego...


W duzej hydrze istnieje mozliwosc przechwycenia zdarzenia otwarcia okna, choc nie jestem pewien czy wykonanie update'u wartosci atrybuty w tym evencie pozwoli na wyswietlenie nowej wartosci na formatce

pzdr,
m
Michał Z.

Michał Z. Młodszy
administrator IT w
2x3 S.A.

Temat: Comarch CDN XL - TRIGGER pobierający numer otwartego...

Kod poskładałem wygląda tak


CREATE TRIGGER CDN.ObliczWage
ON CDN.TraElem
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @GIDNUMER INT;
SELECT @GIDNUMER = TrE_GIDNumer FROM inserted;
DECLARE @WAGA DECIMAL(11,4);
-- TWOJE ZAPYATNIE SUMUJACE WSZYSTKIE POZYCJE Z TRAELEM
SELECT
@WAGA = (SELECT

SUM(E.TrE_Ilosc * TK.Twr_Waga )
FROM [CDN].[TraNag] as T
join [CDN].TraElem as E on
T.TrN_GIDNumer = E.TrE_GIDNumer
inner join [CDN].TwrKarty as TK on E.TrE_TwrNumer = TK.Twr_GIDNumer
where T.TrN_GIDNumer= @GIDNUMER
)
FROM
CDN.TraNag
JOIN CDN.TraElem ON TrN_GIDNumer = TrE_GIDNumer AND TrN_GIDTyp = TrE_GIDTyp
WHERE
TrN_GIDNumer = @GIDNUMER
AND TrN_GIDTyp in (2005,2001) --wz/wze
-- UPDATE ATRYBUTU
UPDATE Atrybuty
SET
AtR_Wartosc = CAST(@WAGA AS NVARCHAR(10))
FROM
CDN.Atrybuty
JOIN CDN.AtrybutyKlasy on AtR_AtkId = AtK_ID
WHERE
AtR_OBINUMER = @GIDNUMER
-- AND ATR_OBITYP in (16,-16) --16 wyrób gotowy , -16 towar
AND AtK_Nazwa = 'Waga'
END


DziałaTen post został edytowany przez Autora dnia 21.03.14 o godzinie 10:09

konto usunięte

Temat: Comarch CDN XL - TRIGGER pobierający numer otwartego...

Michał Z.:
Kod poskładałem wygląda tak


CREATE TRIGGER CDN.ObliczWage
ON CDN.TraElem
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @GIDNUMER INT;
SELECT @GIDNUMER = TrE_GIDNumer FROM inserted;
DECLARE @WAGA DECIMAL(11,4);
-- TWOJE ZAPYATNIE SUMUJACE WSZYSTKIE POZYCJE Z TRAELEM
SELECT
@WAGA = (SELECT

SUM(E.TrE_Ilosc * TK.Twr_Waga )
FROM [CDN].[TraNag] as T
join [CDN].TraElem as E on
T.TrN_GIDNumer = E.TrE_GIDNumer
inner join [CDN].TwrKarty as TK on E.TrE_TwrNumer = TK.Twr_GIDNumer
where T.TrN_GIDNumer= @GIDNUMER
)
FROM
CDN.TraNag
JOIN CDN.TraElem ON TrN_GIDNumer = TrE_GIDNumer AND TrN_GIDTyp = TrE_GIDTyp
WHERE
TrN_GIDNumer = @GIDNUMER
AND TrN_GIDTyp in (2005,2001) --wz/wze
-- UPDATE ATRYBUTU
UPDATE Atrybuty
SET
AtR_Wartosc = CAST(@WAGA AS NVARCHAR(10))
FROM
CDN.Atrybuty
JOIN CDN.AtrybutyKlasy on AtR_AtkId = AtK_ID
WHERE
AtR_OBINUMER = @GIDNUMER
-- AND ATR_OBITYP in (16,-16) --16 wyrób gotowy , -16 towar
AND AtK_Nazwa = 'Waga'
END


Działa


git! :)

Następna dyskusja:

Oficjalne forum Comarch CDN...




Wyślij zaproszenie do