7 Aralık 2011 Çarşamba

Mikro veritabanı üzerinde ihtiyaca göre triger kullanmak.

Mikro veritabanı üzerinde ihtiyaca göre triger kullanmak.
Microsoft SQL Server'da Mikro veritabanına eklenecek triger'ler sayesinde bazı işlemleri kolaylaştırabiliriz.

USE [MikroDB_V14_VERITABANI]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author      : Orhan ÖCAL
-- Create date : 07.12.2011
-- Description : Sipariş fişinde teslim türü boş geçilememesi için kontrol.
-- =============================================
CREATE TRIGGER [dbo].[SiparisTeslimTuruKontrol]
   ON [dbo].[SIPARISLER]
   AFTER INSERT, UPDATE
AS
BEGIN
     DECLARE @sip_teslimturu VARCHAR(25)
     set @sip_teslimturu =''

     SELECT @sip_teslimturu = sip_teslimturu
     FROM inserted
    
     IF @sip_teslimturu = ''
     BEGIN
         RAISERROR('TESLİM TÜRÜ GİRİLMELİDİR!', 16, 1)
         ROLLBACK
     RETURN
     END
END
GO

USE [MikroDB_V14_VERITABANI]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author      : Orhan ÖCAL
-- Create date : 07.12.2011
-- Description : CARI_HESAP_HAREKETLERI tablosunda kayıt sonrası Belge No alanına bilgi yazmak.
-- =============================================
ALTER TRIGGER [dbo].[FaturaOnayKontrol]
   ON [dbo].[CARI_HESAP_HAREKETLERI]
   AFTER INSERT, UPDATE
AS
BEGIN
     DECLARE @cha_RECno int
     SET @cha_RECno = 0

     SELECT @cha_RECno = cha_RECno
     FROM inserted
     WHERE cha_evrak_tip=0 AND cha_cinsi=6 --Toptan fatura
    
     UPDATE dbo.CARI_HESAP_HAREKETLERI
     SET cha_belge_no='ONAYLANMADI'
     WHERE cha_evrak_tip=0 AND cha_RECno=@cha_RECno
END

2 yorum:

Adsız dedi ki...

merhaba orhan bey

merhaba

alınan siparişlerde çok uzun teslim tarihleri çok uzun yada teslim tarihleri belirsiz di

ama biz bu belirsizliğin önüne geçmek istiyoruz
örneğin, sipariş fişi açıldığında teslim tarihi bölümüne geldiğinde, (sipariş fişi tarihi baz alınarak) maksimum teslim süresi 120 gün girilebilsin. bu süreden 1 gün fazla girilemesin
şeklinde istiyoruz

bu konuda yardımcı olabilirmisiniz
teşekkürler

huseyin ugraskan
mr.ugraskan@hotmail.com

Orhan ÖCAL dedi ki...

Merhaba aşağıdaki triger'ı oluşturduğunuzda 120 günden den büyük siparişleri kayıt edilmesine izin vermeyecek.

Not: Mikro program versiyon güncelleme yapmak istediğinizde triger devre dışı olmalı.

CREATE TRIGGER dbo.SiparisTeslimTarihiKontrol
ON dbo.SIPARISLER
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @GunFark int

SELECT @GunFark = DATEDIFF(DAY,sip_tarih,sip_teslim_tarih)
FROM inserted

IF @GunFark > 120
BEGIN
RAISERROR('Teslim tartihi 120 günden fazla olamaz!', 16, 1)
ROLLBACK
RETURN
END
END
GO