stok hareketleri ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

ulu coder yazdı:Trigger ile yapacak olursanız Insert, Edit ve Delete işlemleri için ayrı ayrı trigger yazacaksınız.
Sorunun cevabını vermişim yani =)

Edit için şunu kullanın:

Kod: Tümünü seç

AS
begin
 update s_karti
  set
    s_karti.miktar=s_karti.miktar+
                           (new.gmiktar-new.cmiktar) - 
                           (old.gmiktar - old.cmiktar)
   where
   new.stokkodu=s_karti.s_kodu;
end
Hem Insert hem Edit için bunu kullanırsanız "old." sorun çıkartabilir, hiç denemedim. İsterseniz deneyin, isterseniz 2 ayrı trigger kullanın.

Kolay gelsin...
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

s.a
ayrı ayrı trigger yazılacak derken aynı satırlar delete,editemi yazılacak demek istediniz. yoksa delete yazılacak daha farklımı olcauk.old olmadı yani.Kolay gelsin hocam tşkler.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Hocam; Insert, Update ve Delete için 3 tane trigger oluşturun.

Insert için cümle:

Kod: Tümünü seç

 update s_karti
  set
    s_karti.miktar=s_karti.miktar+
                           (new.gmiktar-new.cmiktar)
   where
   new.stokkodu=s_karti.s_kodu;
Update için cümle

Kod: Tümünü seç

 update s_karti
  set
    s_karti.miktar=s_karti.miktar+
                           (new.gmiktar-new.cmiktar) -
                           (old.gmiktar - old.cmiktar)
   where
   new.stokkodu=s_karti.s_kodu;
Delete için cümle

Kod: Tümünü seç

 update s_karti
  set
    s_karti.miktar=s_karti.miktar -
                           (old.gmiktar - old.cmiktar)
   where
   new.stokkodu=s_karti.s_kodu;
Yine olmasa forumda fahrettin abi'nin makalesi var onu okuyun. Olmadı MSN'de konuşalım, gerekirse VT'nizi gönderirsiniz, yaparız.

Kolay gelsin...
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

s.a uluv-coder cevaplarınız için tşkederim.fakat tam istediğim bir şekilde olmadı her nedense aslında olduda meselea delete sorun çıkartıoyr commit olmuyor.Acilen yapmama lasım msn adresim:=elveda1978@hotmail.com msnden görüşebilirmiyiz .Kolay gelsin
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

s.a
hocam sadece insert,ubdate tm onlar sorunsuz çalıştı.
fakat delete triggerinde bir sorun var
[/code]
where
new.stokkodu=s_karti.s_kodu;

Kod: Tümünü seç

bu kısımda hata veriyor
eğer ki where kısmından sonrasını yazmasam hata vemiyor
kolay gelsin.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Yok yok, ben kesinlikle iyi değilim :(

new.stokkodu yerine old.stokkodu yazmanız gerekiyor.
Insert içinde old, delete içinde new kullanılmaz çünkü.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

s.a
Ulucoder hocam her şey için tşkederim.Allah razı olsun.çözdüm.Çalışmalarınızda başarılar dilerim.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

selman yazdı:s.a
U'lucoder hocam her şey için tşkederim.Allah razı olsun.çözdüm.Çalışmalarınızda başarılar dilerim.
=) Kolay gelsin efendim...
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

s.a
trigger güzel çalışyıor fakat bir yerde hata var gibi. Ben s_kartının beforepost olayında anamenu.s_kartiMIKTAR.AsFloat:=0;
komutunu yazarak girilen her stok kartının miktar bölümüne atıyor.Sonra
ben malalim tablosunda bu ürün olarak diyelimki bir ürün sectim.sonra malalimde ibtrasncation.commitreating; ve s_karıtı tablosunu kapatıp açtığımda.miktar bölümünde kirakam kayboluyor.Normalde kaybolmaması lazım değilmi?kolay gelsin.çünki stpkmiktarlarını göremiyorum.
Cevapla