SP veya trigerla bakiye hesaplama..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
serkan
Üye
Mesajlar: 666
Kayıt: 09 Tem 2003 11:08
Konum: bursa

SP veya trigerla bakiye hesaplama..

Mesaj gönderen serkan » 16 Eki 2011 01:48

Selam arkadaşlar..
Şimdi Stok Hareket tablom ve stokbakiye tablom var..Şimdi en basitinden yapmak istediğim şu; stokhareket tablosuna bir kayıt yaptığımda örnek aşağıda;

150 01 001 GİRİŞ 12 KG DEPO-01

gibi..şimdi burda DEPO-01 kodlu depoya 12 KG ürün girmiş..bir trigerla (AfterInsert) STOKBAKIYE tablosunda 150 01 001 stok kodu ile DEPO-01 depo kodu ile hiç kayıt varmı ona bakacak eğer yok ise STOKBAKIYE tablosuna aşağıdaki kaydı oluşturacak..

150 01 001 12 DEPO-01

bir dahaki sefer yine aynı stok kodu ve aynı depo kodu ile stokhareket tablosuna kayıt yapılırsa artık kayıt olduğundan miktarı - veya + değiştirecek..

Triger yazmada sorunum yok ama trigerda kayıt arama nasıl yapılır bilemiyorum..

mkysoft
Kıdemli Üye
Mesajlar: 2997
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: SP veya trigerla bakiye hesaplama..

Mesaj gönderen mkysoft » 16 Eki 2011 03:27

Kullandığınız veri tabanını yazmamışsınız. Mesala MySQL'de böyle bir aramaya ihtiyaç yoktur. Eğer INSERT ederken kayıt mevcutsa, güncellenmesini sağlayabiliyorsunuz SQL komutunuzda. http://dev.mysql.com/doc/refman/5.0/en/ ... icate.html

serkan
Üye
Mesajlar: 666
Kayıt: 09 Tem 2003 11:08
Konum: bursa

Re: SP veya trigerla bakiye hesaplama..

Mesaj gönderen serkan » 16 Eki 2011 10:05

Hocam kusura bakma Firebird 2.1 kullanıyorum..

serkan
Üye
Mesajlar: 666
Kayıt: 09 Tem 2003 11:08
Konum: bursa

Re: SP veya trigerla bakiye hesaplama..

Mesaj gönderen serkan » 16 Eki 2011 11:25

Yabancı bir kaynaktan gördüğüm şekliyle şu şekilde problem çözüldü..
Stokhareket tablosunun after insert trigerına;

Kod: Tümünü seç

  if (NOT exists (SELECT * FROM STOKBAKIYE WHERE STOKKODU=NEW.STOKKODU AND DEPOKODU=NEW.DEPOKODU)) then
      INSERT INTO STOKBAKIYE (STOKKODU,DEPOKODU,BAKIYE) VALUES(NEW.STOKKODU, NEW.DEPOKODU,(NEW.GIRIS-NEW.CIKIS));
  Else Begin
   UPDATE STOKBAKIYE
  SET
    STOKBAKIYE.BAKIYE=STOKBAKIYE.BAKIYE+
                           (NEW.GIRIS-NEW.CIKIS)
   WHERE
   NEW.STOKKODU=STOKBAKIYE.STOKKODU AND NEW.DEPOKODU=STOKBAKIYE.DEPOKODU;
şeklinde yazdığımda problem çözüldü, önce kaydı aryor, kayıt yok ise diğer tabloya ilk kaydı yapıyor, kayıt var ise sadece bakiyeyi hesaplıyor..

Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 02:10
Konum: İstanbul & Gebze Karışık

Re: SP veya trigerla bakiye hesaplama..

Mesaj gönderen conari » 17 Eki 2011 07:40

Güzelde delete ve updatede de trigger yazmalısın.:)
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim

serkan
Üye
Mesajlar: 666
Kayıt: 09 Tem 2003 11:08
Konum: bursa

Re: SP veya trigerla bakiye hesaplama..

Mesaj gönderen serkan » 17 Eki 2011 02:52

biliyorum tabi onları yazacağımıda ancaki onlarda kaydı aramaya gerek yok direk update ile başlayan kısım yazılacağından zaten problemim o değildi...

Cevapla