STOK PROGRAMLARINDAN GİRİŞ ÇIKIŞ BAKİYELERİNİ BULMA(TRİGERSİZ
Urunler tablosunda ürünlerin kaç adet giriş yapıldığını bulmak için
1)URUNLER tablosu tanımlıyoruz
2)TBL_SATISDETAY TABLOSU tanımlıyoruz
Burada GIRENMIKTAR,CIKANMIKTAR diye alan tanımlayıp tüm giriş ve çıkışları tek bir tabloda yapıyoruz.Satışlar stok giriş ve çıkışları burada yapıyoruz.Burada CariID alanıda kullanabiliriz.
2)Sonra Miktar toplamını bulmak için ms sql de function tanımlıyoruz
USE [stok]
GO
/****** Object: UserDefinedFunction [dbo].[PRO_GELENTOPLAM] Script Date: 9.04.2020 00:59:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[PRO_GELENTOPLAM](@URUNKODU VARCHAR(30)) RETURNS INT
AS BEGIN
DECLARE @MIKTAR INT
SELECT
@MIKTAR=SUM([GIRENMIKTAR])
FROM [civanticaret].[dbo].[TBL_SATISDETAY]
WHERE [URUNKODU]=@URUNKODU
SET @MIKTAR=ISNULL(@MIKTAR, 0)
--SELECT [dbo].[GELENTOPLAM] ('61') KULANIMI
RETURN @MIKTAR
END
Bu şekilde stoklara giren toplamları bulabiliriz.
3)Daha sonra sonra ürünler tablosuna GELENMIKTAR Alanı ekliyoruz türü INT olan
Sonra eklediğimiz bu alanın tipini compute field şekline aşağıdaki gibi çeviyoruz
ALTER TABLE [TBL_URUNLER] ADD CONSTRAINT DF_TBL_URUNLER_SUMGELEN DEFAULT '([dbo].[PRO_GELENTOPLAM]([TBL_URUNLER].[URUNKODU]))' FOR GELENMIKTAR
BU SAYEDE ARTIK ÜRÜNLER TABLOSUNDA
SELECT URUNKODU,URUNADI,GELENMIKTAR from URUNLER dediğimiz zaman
Gelenmiktar değeri function ile hesaplanıp sonucu direkt GELENMIKTAR alanında gösterebiliyoruz
CREATE TABLE [dbo].[TBL_URUNLER](
[ID] [int] IDENTITY(1,1) NOT NULL,
[STOKBARKOD] [nvarchar](30) NULL,
[URUNKODU] [nchar](20) NULL,
[URUNADI] [nchar](50) NULL,
[GELENMIKTAR] AS ([dbo].[PRO_GELENTOPLAM]([TBL_URUNLER].[URUNKODU])),
CONSTRAINT [PK_TBL_URUNLER] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
SELECT
[URUNKODU]
,[URUNADI]
,[GELENMIKTAR]
FROM [dbo].[TBL_URUNLER]
GO
/****** Object: UserDefinedFunction [dbo].[PRO_GELENTOPLAM] Script Date: 9.04.2020 01:09:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[PRO_GELENTOPLAM](@URUNKODU VARCHAR(30)) RETURNS INT
AS BEGIN
DECLARE @MIKTAR INT
SELECT
@MIKTAR=SUM([MIKTAR])
FROM [dbo].[TBL_SATISDETAY]
WHERE [URUNKODU]=@URUNKODU
SET @MIKTAR=ISNULL(@MIKTAR, 0)
--SELECT [dbo].[GELENTOPLAM] ('61') KULANIMI
RETURN @MIKTAR
END
Hiç yorum yok