Pierwszy triger - Ograniczenie przesuwania towaru na magazyn

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

Moderator: mikey

Onek
Posty: 27
Rejestracja: 25 maja 2020, 10:14
Rola: Użytkownik CDN XL
Wersja: 2019

Pierwszy triger - Ograniczenie przesuwania towaru na magazyn

Post autor: Onek »

Witam,
Jestem w trakcie pisania swojego pierwszego trigera na bazie, oczywiście testowej.
Celem trigera jest ograniczenie przesuwania określonych towarów na określone magazyny.
Pisze na ten moment triger na jednym towarze i testuje.
Sama blokada działa dobrze tzn. przy próbie zatwierdzenia MMW z wybranym towarem na podany magazyn mam informacje że taka operacja nie jest możliwa i na tym się kończy prawidłowe działanie trigera, ponieważ gdy skasuje z dokumentu towar, którego nie można przesunąć a zostawię inne towary to dostaje błąd z XL
Szczegóły operacji:
Operacja zmiany obiektu TraNag o identyfikatorze (1603:1372418:322:0).
Identyfikator operacji: Zapisz_TraNag-29.
Błąd: Błąd podczas konwertowania typu danych varchar na numeric. (37000), Błąd podczas konwertowania typu danych varchar na numeric..
Może mnie ktoś naprowadzić, w którym miejscu popełniam błąd?

Kod: Zaznacz cały

USE [ERPXL_ITESZKOL]
GO
/****** Object:  Trigger [CDN].[ITE_TraNag_PrzesuwanietowaruDino]    Script Date: 14.12.2020 10:00:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER TRIGGER [CDN].[ITE_TraNag_PrzesuwanietowaruDino]
   ON  [CDN].[TraNag]
   For Update
AS 
Declare @typ int
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	IF UPDATE(trn_stan)
		Set @typ = (Select trn_gidtyp from inserted)
		if @typ = 1603 -- dla mmw
		BEGIN
			IF EXISTS (
						Select * from inserted i
						inner join CDN.TraElem elem on i.TrN_GIDTyp = elem.TrE_GIDTyp and i.TrN_GIDNumer = elem.TrE_GIDNumer
						where (i.TrN_Stan in(1,2,3,4,5)) --zadziala jesli jest próba zapisu do bufora lub zatwierdzenia
						and (i.TrN_MagZNumer = 1) and (i.TrN_MagDNumer in (16,18))  -- dla źródłowy centralny i docelowy tech 12,18
						and elem.TrE_TwrKod = 2019220282842 -- dla wybranego towaru
						)
			BEGIN
				Raiserror('#CDN_BLAD/# #CDN_1=Nie można przesunąć towaru . /# #CDN_2= /# #CDN_3= /# ',16,1)
					ROLLBACK TRAN
			end
    -- Insert statements for trigger here

END
END

Awatar użytkownika
wacek
Posty: 709
Rejestracja: 27 paź 2008, 18:04
Rola: Administrator CDN XL
Lokalizacja: Łódzkie

Re: Pierwszy triger - Ograniczenie przesuwania towaru na magazyn

Post autor: wacek »

zamień:
elem.TrE_TwrKod = 2019220282842

na:
elem.TrE_TwrKod = '2019220282842'
Pozdrawiam,
Robert

select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)

Onek
Posty: 27
Rejestracja: 25 maja 2020, 10:14
Rola: Użytkownik CDN XL
Wersja: 2019

Re: Pierwszy triger - Ograniczenie przesuwania towaru na magazyn

Post autor: Onek »

Super działa, taka pierdoła ale jednak wychodzi brak doświadczenia.
Dzięki wielkie ;).

ODPOWIEDZ