Sayfayı Yazdır | Pencereyi Kapat

2 tablo ile Kolon Bazinda Geçerlilik

Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: ERP Temel Paketler
Forum Adı: ERP Kullanıcı İşlemleri Modülü
Forum Tanımlaması: Kullanıcı İşlemleri Modülü İle İlgili Bilgiler ve Sorular İçin...
URL: http://www.erpne.org/forum_posts.asp?TID=4490
Tarih: 29 Mart 2025 Saat 03:49
Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com


Konu: 2 tablo ile Kolon Bazinda Geçerlilik
Mesajı Yazan: chasteeer
Konu: 2 tablo ile Kolon Bazinda Geçerlilik
Mesaj Tarihi: 09 Mayıs 2017 Saat 09:16
Merhaba,

Aşağıdaki sorguyu kolon bazında geçerlilik ile yapmak istiyorum nasıl yapabilirim ?

select * from TBLSIPAMAS SM
JOIN tblfatuek FT
ON FT.FATIRSNO=SM.FATIRS_NO
WHERE  FT.FATIRSNO=SM.FATIRS_NO and FT.ACIK9 is null and
  FT.FKOD='6' and (kod2='H' or KOD2='P' )

Müşteri siparişleri girilirken Özel Kod 2 alanı H veya P seçilirse ACIK9 kısmı boş geçilemesin.



Cevaplar:
Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mayıs 2017 Saat 12:30
ben trigger ile çözdüm
kalem bilgilerinde bir veriyi zorlayacaksanız, TRA tablosuna INSERT,UPDATE triggerı
üst bilgilerde bir veriyi zorlayacaksanız FATUEK veya MAS tablosuna trigger yazarsınız

örnekler aşağıda fnchekdate isimli kullanıcı fonksiyonu yazılanın geçerli bir tarih olup olmadığını kontrol ediyor


ALTER TRIGGER [dbo].[TRG_TBLSIPATRA_IU_EKALAN]
ON [dbo].[TBLSIPATRA]
FOR INSERT, UPDATE
AS

BEGIN
   DECLARE @KOD2 VARCHAR(8)=NULL;
   DECLARE @EKALAN VARCHAR(35);
   DECLARE @KOD VARCHAR(35);
   DECLARE @DEPO SMALLINT=0;
   DECLARE @HTUR CHAR(1);

   SELECT @EKALAN=EKALAN1,@KOD=STOK_KODU,@HTUR=STHAR_HTUR FROM INSERTED;
   SELECT @KOD2=TBLSTSABIT.KOD_2,@DEPO=DEPO_KODU FROM TBLSTSABIT WHERE TBLSTSABIT.STOK_KODU = @KOD;
   IF (@KOD2 = 'HOSTING' OR @DEPO = 22) AND @HTUR NOT IN ('A','N') AND @EKALAN IS NULL
   BEGIN
      RAISERROR ('Hosting/Lisans Kartlarında Ek Alan-2 Boş geçilemez !..', 16, 1)
      ROLLBACK
      RETURN
   END
END


ALTER TRIGGER [dbo].[MTR_FATUEKIU] 
ON [dbo].[TBLFATUEK] 
FOR INSERT,UPDATE 
AS 
BEGIN
DECLARE @IRSNO VARCHAR(50)
DECLARE @TARIH VARCHAR(15)
DECLARE @FISNO VARCHAR(15)
DECLARE @CKOD VARCHAR(20),@FKOD CHAR(1);
SELECT @IRSNO=ACIK10, @TARIH=ACIK11, @FISNO=FATIRSNO,@CKOD=CKOD,@FKOD=FKOD FROM INSERTED A,TBLFATUIRS B
WHERE A.FATIRSNO=B.FATIRS_NO AND A.FKOD=B.FTIRSIP AND A.CKOD=B.CARI_KODU 
 
IF @CKOD like '120-4-00[45]' AND @FKOD='1'
BEGIN
 IF (dbo.fnCheckDate(SUBSTRING(@TARIH,4,2)+'.'+LEFT(@TARIH,3)+RIGHT(@TARIH,4)) IS NULL) OR (@IRSNO IS NULL) OR (@TARIH IS NULL)  
BEGIN
   RAISERROR(N'Geçersiz tarih/irsaliye No..!',16,1);
   RETURN;
END
IF NOT ((dbo.fnCheckDate(SUBSTRING(@TARIH,4,2)+'.'+LEFT(@TARIH,3)+RIGHT(@TARIH,4)) IS NULL) OR (@IRSNO IS NULL) OR (@TARIH IS NULL) )
 BEGIN
UPDATE TBLSTHAR SET IRSALIYE_NO=@IRSNO,IRSALIYE_TARIH=dbo.fnCheckDate(SUBSTRING(@TARIH,4,2)+'.'+LEFT(@TARIH,3)+RIGHT(@TARIH,4))
WHERE FISNO=@FISNO AND STHAR_FTIRSIP='1' AND STHAR_ACIKLAMA=@CKOD
END -- STHAR UPDATE
select 'iptal'
END --  CARI MEMORIAL ISE
 
END -- TRIGGER



-------------
Mehmet Baykan


Mesajı Yazan: chasteeer
Mesaj Tarihi: 09 Mayıs 2017 Saat 14:11
Ben üst bilgi ekranında istiyorum onun için FATUEK tablosuna trigger yapmam lazım. Umarım yapabilirim.
Trigger yaptıktan sonra en son siparişi tamamla dediğinde hata verecek ama sipariş kalemleri silinmeyecek değil mi ?


Mesajı Yazan: chasteeer
Mesaj Tarihi: 09 Mayıs 2017 Saat 14:56
Böyle birşey yaptım oldu gibi :)

AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @ACIK9 VARCHAR(15);
DECLARE @KOD2 VARCHAR(8);
DECLARE @FTIRSIP VARCHAR(1);
DECLARE @FATIRS_NO VARCHAR(20);

SELECT @KOD2=KOD2, @FTIRSIP=FTIRSIP, @FATIRS_NO=FATIRS_NO FROM INSERTED;
SELECT @FATIRS_NO=FT.FATIRSNO FROM TBLFATUEK FT WHERE FT.FATIRSNO = @FATIRS_NO
IF (@KOD2='H' OR @KOD2='P') AND @ACIK9 IS NULL
BEGIN
RAISERROR ('İhraç Kayıtlı Siparişlerde AÇIKLAMA 9 alanı Boş Geçilemez !..', 16, 1)
      ROLLBACK
      RETURN
   END
END


Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mayıs 2017 Saat 15:12
.....
AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @ACIK9 VARCHAR(15);
DECLARE @KOD2 VARCHAR(8);
DECLARE @FTIRSIP VARCHAR(1);
DECLARE @FATIRS_NO VARCHAR(20);

SELECT @KOD2=KOD2, @FTIRSIP=FTIRSIP, @FATIRS_NO=FATIRS_NO,@ACIK9=ACIK9 FROM INSERTED A
JOIN TBLSIPAMAS B ON A.FKOD=B.FTIRSIP AND A.FATIRSNO=B.FATIRS_NO AND A.CKOD=B.CARI_KODU

--SELECT @FATIRS_NO=FT.FATIRSNO FROM TBLFATUEK FT WHERE FT.FATIRSNO = @FATIRS_NO
IF @FTIRSIP='6' AND (@KOD2='H' OR @KOD2='P') AND @ACIK9 IS NULL
BEGIN
RAISERROR ('İhraç Kayıtlı Siparişlerde AÇIKLAMA 9 alanı Boş Geçilemez !..', 16, 1)
RETURN
   END
END

şeklinde olmalı. INSERTED (FATUEK) ile TBLSIPAMAS ilişkilendirilip KOD2 bilgisi oradan alınmalı



-------------
Mehmet Baykan


Mesajı Yazan: chasteeer
Mesaj Tarihi: 09 Mayıs 2017 Saat 15:47
Burada sadece boş olmasını sorguladık. Eğer doluysa hata vermeden devam et nasıl diyeceğiz ?


Mesajı Yazan: rhan
Mesaj Tarihi: 09 Mayıs 2017 Saat 17:43
doluysa zaten devam eder?


-------------
İnnova Antalya Proje Danışmanlık
Orhan ÇÖPÜROĞLU

0544 241 45 55
0242 311 45 56


Mesajı Yazan: chasteeer
Mesaj Tarihi: 09 Mayıs 2017 Saat 17:55
doluysa da boşsa da hata veriyor ama.


Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mayıs 2017 Saat 18:23
Orjinalini yazan: mbaykan mbaykan Yazdı:

.....
AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @ACIK9 VARCHAR(15);
DECLARE @KOD2 VARCHAR(8);
DECLARE @FTIRSIP VARCHAR(1);
DECLARE @FATIRS_NO VARCHAR(20);
        declare @upd VARCHAR(1);

SELECT @KOD2=KOD2, @FTIRSIP=FTIRSIP, @FATIRS_NO=FATIRS_NO,@ACIK9=ACIK9,@UPD=B.update_kodu FROM INSERTED A
JOIN TBLSIPAMAS B ON A.FKOD=B.FTIRSIP AND A.FATIRSNO=B.FATIRS_NO AND A.CKOD=B.CARI_KODU

--SELECT @FATIRS_NO=FT.FATIRSNO FROM TBLFATUEK FT WHERE FT.FATIRSNO = @FATIRS_NO
IF @FTIRSIP='6' AND @upd='X' AND (@KOD2='H' OR @KOD2='P') AND @ACIK9 IS NULL
BEGIN
RAISERROR ('İhraç Kayıtlı Siparişlerde AÇIKLAMA 9 alanı Boş Geçilemez !..', 16, 1)
RETURN
   END
END

şeklinde olmalı. INSERTED (FATUEK) ile TBLSIPAMAS ilişkilendirilip KOD2 bilgisi oradan alınmalı

UPDATEKODU ile birlikte sorgulayın



-------------
Mehmet Baykan


Mesajı Yazan: chasteeer
Mesaj Tarihi: 10 Mayıs 2017 Saat 08:32
SIPAMAS 'ta update kodu 'Tamamlanmamış müşteri/satıcı siparişler için 'Y' değerini atar. Sipariş tamamlanınca 'NULL' değerini atar.' Bu alanla ilgili ne yapabiliriz ki ? Biz üst bilgileri girdikten sonra ilk kalemi eklerken hata veriyor. Sizin verdiğiniz sorguyu da denedim ama ACIK9 alanı dolu olmasına rağmen ilk kalemi eklersen hata veriyor. Sanki kalem bazında kontrol ediyor gibi..


Mesajı Yazan: mbaykan
Mesaj Tarihi: 10 Mayıs 2017 Saat 09:38
FATUEK'e kalemlere geçtiğinde  ya da toplamlar sayfasında Tamam ile
belgeyi tamamladığınızda güncelleyecek profiler'dan hangi durum size uyuyor buna göre trigger'ı
ona göre düzenleyin

benim yazdığım örneklerden birinde trigger TRA tablosu üzerinde 
yardımcı olur umarım
kodu UPDATE_KODU IS NULL  şeklinde denediniz mi?



-------------
Mehmet Baykan


Mesajı Yazan: chasteeer
Mesaj Tarihi: 10 Mayıs 2017 Saat 09:48
TBLFATUEK ile TBLSIPAMAS tablosunu bağlayarak yaptım dediğiniz gibi. İlk kalemi girerken yada kalemler sayfasına geçerken veya ACIK9 alanı boş geçilir geçilmez hata versin istiyorum. Son seçenek daha çok işimi görür. Bende araştırıyorum tekrar bakacağım. Sizde birşey bulabilirseniz burayı güncellerseniz sevinirim.

UPDATE_KODU IS NULL olarak ta denedim olmadı.


Mesajı Yazan: chasteeer
Mesaj Tarihi: 10 Mayıs 2017 Saat 11:41
Başta Mehmet Bey olmak üzere konuya dahil olan herkesten özür diyorum. İlk yaptığımız değişiklikte kod çalışıyormuş. TBLSIPAMAS üzerinden benim yaptığım trigger 'ı disable etmeden TBLFATUEK olarak değiştirdiğimiz trigger 'ı çalıştırıyormuşum. Zamanınızı aldım tekrar kusura bakmayın. Çalışan son hali;

CREATE TRIGGER OZELKOD ON TBLFATUEK
AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @ACIK9 VARCHAR(15);
DECLARE @KOD2 VARCHAR(8);
DECLARE @FTIRSIP VARCHAR(1);
DECLARE @FATIRS_NO VARCHAR(20);

SELECT @KOD2=KOD2, @FTIRSIP=FTIRSIP, @FATIRS_NO=FATIRS_NO,@ACIK9=A.ACIK9 FROM INSERTED A
JOIN TBLSIPAMAS B ON A.FKOD=B.FTIRSIP AND A.FATIRSNO=B.FATIRS_NO
IF @FTIRSIP='6' AND ( @KOD2='H' OR @KOD2='P') AND @ACIK9 IS NULL
BEGIN
RAISERROR ('İhraç Kayıtlı Siparişlerde ACIKLAMA 9 alanı Boş Geçilemez !!..', 16, 1)
      RETURN
END
END



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 11.10 - http://www.webwizforums.com
Copyright ©2001-2017 Web Wiz Ltd. - https://www.webwiz.net