Trigger eksik çalışıyor.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Trigger eksik çalışıyor.

Mesaj gönderen NewMember »

Arkadaşlar merhaba aşağıda yazdığım trigger ile sokhareketleri tablosundan kayıt sildirince (satış kayıtları) bunları stok tablosuna geri döndürüyorum.Şöyle ilginç bir şey oluyor.IBExpertte tek tek 20 kaydı silince trigger 20 defa çalışıp 20 adet o stoğu artırıyor.(Denemek için yaptığımdan satışlarıda 1'er adet yapmıştım aynı maldan)Ancak delphi içinden satış iptal butonu ile bu 20 kaydı while döngüsü ile baştan başlayıp sona gelene kadar sildirtiyorum.Ama bu sefer trigger ne kadar çalışıyor bilemiyorum ama stoku 10 adet artırıyor.
Eğer 21 kayıt sildirirsem de 11 adet artırıyor.Yani eğer çiftse yarısı tekse yarısı artı 1 kadar çalışıyor.Acaba trigger kayıt silene kadar delphi tarafı daha hızlımı çalışıyor nasıl oluyor yetiştiremiyormu gerçi bu yetiştirememe konusu bana mantıksız geliyor ama aklıma başka bir şey gelmediğinden yazdım.Ayrıca hepinizin aklında geçen soracağınız muhtemel şu soruya cevap veriyorum.Stok hareketleri tablosunun bağlı olduğu dataset bu döngü çalışırken başka hiç bir şekilde başka bir olayı tetiklemiyor ve bu tabloya bu silme olayı haricinde başka bir işlem yapılmıyor.

Ama ibexpertte normal delphide eksik çalışan trigger.Böyle birşey olabilirmi?

Kod: Tümünü seç

CREATE TRIGGER TRGSTOKGUNCELLEME FOR STOKHAREKETLERI
ACTIVE AFTER DELETE POSITION 0
AS
begin
update stok set stok.miktar=stok.miktar+old.cikanmiktar-old.girenmiktar
where stok.barkod=old.barkodu;
end
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Trigger eksik çalışıyor.

Mesaj gönderen esistem »

merhaba;

delphideki while döngüsü kodunu da buraya koyabilirmisin ? sorun onda olabilir.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: Trigger eksik çalışıyor.

Mesaj gönderen White Rose »

delphi tarafında kaydı sildikten sonra dosyayı refresh yapıp deneyin.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Re: Trigger eksik çalışıyor.

Mesaj gönderen NewMember »

esistem yazdı:merhaba;

delphideki while döngüsü kodunu da buraya koyabilirmisin ? sorun onda olabilir.
Haklısınız.Sorun ordaymış.İnsan bazen gözünün önündekini göremiyor.Veri okumak için kullandığım bir while döngüsünü projenin bir başka yerinden copy paste yapınca oradaki Dataset.Next kodunu silmezseniz böyle olur. :D
Tabi hes silme işleminden sonra dataset next yaptığından bir siliyor bir atlıyor dolayısıyla da işlem sonunda dbgridi boşalttığımdan stok hareketlerinin yarısının silinip yarısının kaldığını da görmediğimden tümünün silindiğini varsayıyordum.Oysa 20 kaydın 10 u silindiğinden triggerde doğal olarak 10 kez çalışıyor.Sonuç olarak hata bizde.(Her zamanki gibi :oops: )

Bu arada bir şey daha farkettim.Bunu bir çok üyemiz biliyordur ancak yinede yazayım.Firebird null ifadeler içeen hesaplamalarda çuvallıyor.Yani içeriği null olan bir sayısal alanı sıfır olarak kabul edipte işleme almıyor.Bu kontrolüde yapmak gerekiyor.Kafa yoran herkese teşekkürler.
İyi çalışmalar.......................
Cevapla