ja mam podobną rzecz rozwiązaną w następujący sposób:
- sprawdzam z inserted pole trn_stan
- jeżeli trn_stan ma wartość jedną z: 0, 1, 2, 3
- jeżeli trn_stan = 3
- tutaj wykonaj całą resztę co potrzebujesz.
całość wygląda tak (część musiałem wykomentować niestety ...) ale ciało zostało:
Kod: Zaznacz cały
SET NOCOUNT ON;
IF UPDATE(Trn_stan)
BEGIN
declare @kntgidnumer int
declare @knt_docelowy int
declare @trn_stan int
declare @trn_zrdnumer int
declare @tresc nvarchar(max)
declare @temat nvarchar(max)
declare @tresc2 nvarchar(max)
declare @temat2 nvarchar(max)
declare @knt_nazwa1 varchar(255)
declare @knt_nazwa2 varchar(255)
declare @knt_akronim varchar(50)
declare @trn_gidnumer int
declare @trn_gidtyp int
declare @sposob_dostawy varchar(255)
select @trn_gidnumer = trn_gidnumer, @sposob_dostawy = trn_sposobdostawy, @kntgidnumer = trn_kntnumer,
@trn_stan = trn_stan, @trn_gidtyp = trn_gidtyp, @knt_docelowy = trn_kndnumer from inserted
if @sposob_dostawy <> 'cos' and @sposob_dostawy <> ''
begin
-- pobieramy podstawowe informacje o kontrahencie
select @knt_nazwa1 = knt_nazwa1, @knt_nazwa2 = knt_nazwa2, @knt_akronim = knt_akronim
from cdn.kntkarty
where knt_gidnumer = @kntgidnumer
-- sprawdzamy, ile jest numerów telefonów dla osób przypisanych jako odpowiedzialnych za zamówienia
declare @ilosc_nr int
select @ilosc_nr = count(*) from cdn.kntosoby where kns_kntnumer = @kntgidnumer and KnS_Telefon <> '' and KnS_UpowaznionaZam = 1
declare @numer varchar(255)
declare db_cursor cursor for select kns_telefon from cdn.kntosoby where kns_kntnumer = @kntgidnumer and kns_telefon <> '' and kns_upowaznionazam = 1
open db_cursor
fetch next from db_cursor into @numer
while @@FETCH_STATUS = 0
begin
if @trn_stan in (0, 1, 2, 3) and @trn_gidtyp in (2033, 2037, 2034)
begin
declare @kurier varchar(255)
declare @numer_listu varchar(255)
declare @aktualny_stan int
select @aktualny_stan = trn_stan from cdn.tranag where trn_gidnumer = @trn_gidnumer
if @aktualny_stan = 3
begin
-- pobierz informacje o firmie kuriera
select @kurier = Atr_Wartosc from cdn.TraNag a join cdn.atrybuty b on a.trn_gidnumer = b.atr_obinumer where trn_kntnumer = @kntgidnumer and Atr_AtkId = 8 and trn_gidnumer = @trn_gidnumer
-- pobierz informacje o numerze listu przewozowego
select @numer_listu = atr_wartosc from cdn.tranag a join cdn.atrybuty b on a.trn_gidnumer = b.atr_obinumer where trn_kntnumer = @kntgidnumer and Atr_AtkId = 7 and trn_gidnumer = @trn_gidnumer
end
END