Asagida 1 adet triger ve 1 adet sp var. ornekgini verdigim triger 1 table'in delete,insert ve edit eventlarinda calisiyor. datalari diger trigerlar tarafindanda kullanilan sp ye atarak toplam stok rakkamini takip etmemi sagliyor. Sorunum stokid ve turid gibi fieldlarin Null gelmesi durumunda satir guncellestirmede bulunamadi gibi bir hata olusturuyor. engellemek icin isnull kontrollerini koydum. ama genede bazen ayni hatayi veriyor. eger inceleyip yaptigim hatalari bulursaniz cok sevinirim. zor durumda kaldim ama cozemiyorumda

Saygilarimla;
Triger :
Kod: Tümünü seç
CREATE TRIGGER [ERP_DepoTransferMST_All] ON [dbo].[ERP_DepoTransferMST]
FOR INSERT, UPDATE, DELETE
AS
BEGIN
/* Trigger body */
SET NOCOUNT ON
DECLARE StokCRS CURSOR FOR
SELECT GirisDepoID,GirenUrunID,GirenTurID,GirenPaket,GirenMiktar,GirenMiktar FROM Deleted
OPEN StokCRS
DECLARE @mDepoID Integer
DECLARE @mStokID Integer
DECLARE @mTurID Integer
DECLARE @mPaket nvarchar(10)
DECLARE @mAdet float
DECLARE @mAdet2 float
FETCH NEXT FROM StokCRS INTO @mDepoID,@mStokID,@mTurID,@mPaket,@mAdet,@mAdet2
WHILE (@@FETCH_STATUS = 0) BEGIN
Set @mAdet=0-Isnull(@mAdet,0)
Set @mAdet2=0-IsNull(@mAdet2,0)
Set @mStokID=isnull(@mStokID,0)
Set @mTurID=isnull(@mTurID,0)
Execute StokIsle @mDepoID,@mStokID,@mTurID,@mPaket,@mAdet,@mAdet2
FETCH NEXT FROM StokCRS INTO @mDepoID,@mStokID,@mTurID,@mPaket,@mAdet,@mAdet2
END
CLOSE StokCRS
DEALLOCATE StokCRS
DECLARE YStokCRS CURSOR FOR
SELECT GirisDepoID,GirenUrunID,GirenTurID,GirenPaket,GirenMiktar,GirenMiktar FROM Inserted
OPEN YStokCRS
FETCH NEXT FROM YStokCRS INTO @mDepoID,@mStokID,@mTurID,@mPaket,@mAdet,@mAdet2
WHILE (@@FETCH_STATUS = 0) BEGIN
Set @mAdet=Isnull(@mAdet,0)
Set @mAdet2=IsNull(@mAdet2,0)
Set @mStokID=isnull(@mStokID,0)
Set @mTurID=isnull(@mTurID,0)
Execute StokIsle @mDepoID,@mStokID,@mTurID,@mPaket,@mAdet,@mAdet2
FETCH NEXT FROM YStokCRS INTO @mDepoID,@mStokID,@mTurID,@mPaket,@mAdet,@mAdet2
END
CLOSE YStokCRS
DEALLOCATE YStokCRS
END
GO
Kod: Tümünü seç
CREATE PROCEDURE StokIsle (@DepoID integer,@UrunID integer,@TurID integer,@Paket varchar(10),@Adet float,@Adet2 Float) as
Set @TurID=IsNull(@TurID,0)
Set @UrunID=IsNull(@UrunID,0)
Set @Paket=IsNull(@Paket,'')
If (Select Kod From dbo.ERP_HizliStok
Where DepoID=@DepoID and UrunID=@UrunID and isnull(TurID,0)=isnull(@TurID,0) and
isnull(Paket,'')=isnull(@Paket,'')) is Null
INSERT INTO dbo.ERP_HizliStok
(DepoID, UrunID, TurID,Paket)
VALUES(@DepoID, @UrunID,@TurID,@Paket)
UPDATE dbo.ERP_HizliStok
Set Stok=ISNull(Stok,0)+ISNull(@Adet,0),
StokOlcum=ISNull(StokOlcum,0)+ISNull(@Adet2,0)
Where DepoID=@DepoID and UrunID=@UrunID and isnull(TurID,0)=isnull(@TurID,0) and Paket=@Paket
GO