klient
Michał Zimek
54 pkt
5 pytań
4 odpowiedzi
2 pomysłów
0 komentarzy
4 100%
1 pkt

Trigger - Aktualizacja daty Atrybutu

Michał Zimek zapytał/a o
Produkcja
Produkcja pytań: 51 | odpowiedzi: 116

Michał ZimekZbigniew MakarewiczSebastian SkoczekKarolina Nowakkorczowski.damianMarek HutkoJerzy PierchałaDamian Januś
Tips&tricks
Tips&tricks pytań: 181 | odpowiedzi: 824

Bogusław NowakowskiTomasz SmolarekLongina SzymankiewiczPrzemysław ZalewskiŁukasz WalterMichał Zimekkrzysztof  krauzeMichał Marat
Comarch ERP XL
Comarch ERP XL pytań: 833 | odpowiedzi: 2859

Comarch ERP XL

Damian CieślikPaweł PilacińskiMaciej LachowiczRafał RaczyńskiAgnieszka MaterlaHubert TrzewikWojciech MaciejowskiBarbara Przybylska

Witam,

nie rozumiem dlaczego ten trigger wykonuje się tylko dla PZL, a już dla Atr powiązanego z PZL nie?

Jaka jest kolejność tworzenia tabel w XL 2018.2.1 podczas generowania ZP z dokumentu ZW?

USE [ERPXL_201603]
GO
/****** Object: Trigger [CDN].[WDR_UzupKnt] Script Date: 08/19/2019 08:39:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [CDN].[WDR_mz_AtrybutyUzupelnienieDatyNaZP]
ON [CDN].[Atrybuty]
after insert
AS
BEGIN
SET NOCOUNT on;
declare @gidObiAtr int, @AtrAtkId int, @AtrOBITyp int,@AtrWartosc int, @DokumentObcy varchar(40)
select @gidObiAtr=I.Atr_ObiNumer , @AtrOBITyp=I.Atr_ObiTyp , @AtrAtkId = I.Atr_AtkId from inserted I
if @AtrOBITyp=14343 and @AtrAtkId=78 --wykonuje sie update tylko dla atrybutu o id 78
begin
SET @AtrWartosc = ( select Zan_DataRealizacji from cdn.ProdZlecenia /*Zapytanie nie moze pobrac danych z tabel zamNag czy ZamElem czy ZamZamLinki, oczywiście po utworzeniu zlecenia data w Zan pobiera się z tego zapytania prawidłowo*/
left join CDN.ProdZlecElem on PZL_Id=PZE_Zlecenie
left join CDN.ZamZamLinki on ZZL_ZZGidTyp=14343 and ZZL_ZZGidNumer=PZE_Id and ZZL_ZZGidLp=PZE_Lp
left join cdn.ZamElem on ZaE_GIDTyp=ZZL_ZSGidTyp and ZaE_GIDNumer=ZZL_ZSGidNumer and ZaE_GIDLp=ZZL_ZSGidLp
left join cdn.zamnag on ZaN_GIDNumer=ZaE_GIDNumer
where PZL_Id=@gidObiAtr )
SET @DokumentObcy = (select PZL_DokumentObcy from CDN.ProdZlecenia where PZL_Id=@gidObiAtr ) /*zapytanie pobiera prawidłowo wartość z tabeli*/
-- update
update cdn.Atrybuty set Atr_Wartosc = /*79864*/ @AtrWartosc where Atr_ObiNumer = @gidObiAtr and Atr_AtkId = 78 /*wartosc dla atrybutu się nie uaktualnia*/
update cdn.ProdZlecenia set PZL_NumerSeryjny = @DokumentObcy where PZL_Id = @gidObiAtr and PZL_DataZamkniecia =0 and PZL_NumerSeryjny <>PZL_DokumentObcy /*wartosc aktualizuje się prawidlowo*/
end
SET NOCOUNT OFF;
-- Insert statements for trigger here
END

Odpowiedzi:

User Avatar
klient
Łukasz Jajor
63 pkt
4 pytań
47 odpowiedzi
1 pomysłów
1 komentarzy
18 100%
oceń
 
Łukasz Jajor odpowiedział/a
Produkcja
Produkcja pytań: 51 | odpowiedzi: 116

Michał ZimekZbigniew MakarewiczSebastian SkoczekKarolina Nowakkorczowski.damianMarek HutkoJerzy PierchałaDamian Januś
Tips&tricks
Tips&tricks pytań: 0 | odpowiedzi: 77

Comarch ERP XL
Comarch ERP XL pytań: 833 | odpowiedzi: 2859

Comarch ERP XL

Damian CieślikPaweł PilacińskiMaciej LachowiczRafał RaczyńskiAgnieszka MaterlaHubert TrzewikWojciech MaciejowskiBarbara Przybylska
30 d. temu
A czy atrybut jest wymagany podczas zakładania tego dokumentu? Tzn. czy na pewno istnieje podczas wykonywania update?
Ta odpowiedź została skomentowana
User Avatar
klient
Michał Zimek
54 pkt
5 pytań
4 odpowiedzi
2 pomysłów
0 komentarzy
4 100%
oceń
 
Michał Zimek odpowiedział/a
Produkcja
Produkcja pytań: 51 | odpowiedzi: 116

Michał ZimekZbigniew MakarewiczSebastian SkoczekKarolina Nowakkorczowski.damianMarek HutkoJerzy PierchałaDamian Januś
Tips&tricks
Tips&tricks pytań: 0 | odpowiedzi: 77

Comarch ERP XL
Comarch ERP XL pytań: 833 | odpowiedzi: 2859

Comarch ERP XL

Damian CieślikPaweł PilacińskiMaciej LachowiczRafał RaczyńskiAgnieszka MaterlaHubert TrzewikWojciech MaciejowskiBarbara Przybylska
30 d. temu

Hmm, być może tak właśnie jest iż jeszcze Atrybut nie istnieje w bazie natomiast poniższy kod już działa prawidłowo:

CREATE TRIGGER [CDN].[WDR_mz_AtrybutyUzupelnienieDatyNaZP]
ON [CDN].[prodzlecenia]
after insert,update
AS
BEGIN
SET NOCOUNT on;
declare @gidObiAtr int,@AtrWartosc varchar(10), @DokumentObcy varchar(40), @PZLStan int
select @gidObiAtr=I.PZL_Id, @DokumentObcy = I.PZL_DokumentObcy, @PZLStan = isnull(I.PZL_Stan,0) from inserted I

SET @AtrWartosc= ( select ZaE_DataPotwDst /*Zan_DataRealizacji*/ from cdn.zamnag
left join cdn.ZamElem on ZaN_GIDNumer=ZaE_GIDNumer
left join CDN.ZamZamLinki on ZaE_GIDTyp=ZZL_ZSGidTyp and ZaE_GIDNumer=ZZL_ZSGidNumer and ZaE_GIDLp=ZZL_ZSGidLp
left join cdn.ProdZlecElem on ZZL_ZZGidTyp=14343 and ZZL_ZZGidNumer=PZE_Id and ZZL_ZZGidLp=PZE_Lp
left join CDN.ProdZlecenia on PZL_Id=PZE_Zlecenie
where PZL_Id=@gidObiAtr )
--SET @DokumentObcy = (select PZL_DokumentObcy from CDN.ProdZlecenia where PZL_Id=@gidObiAtr )

if @PZLStan < 3
begin
update cdn.Atrybuty set Atr_Wartosc = @AtrWartosc where Atr_ObiNumer = @gidObiAtr and Atr_AtkId=78 and ISNULL(Atr_Wartosc,0) = 0
update cdn.ProdZlecenia set PZL_NumerSeryjny = @DokumentObcy where PZL_Id = @gidObiAtr and PZL_DataZamkniecia =0 and PZL_NumerSeryjny =''
end

SET NOCOUNT OFF;
end

Masz pytanie?

zadaj pytanie

Masz pomysł?

zgłoś pomysł