stok hareketleri ile ilgili
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
stok hareketleri ile ilgili
s.a
Herkese iyi çalışmalar diliyorum.Benim takıldığım bir nokta var .Bu takıldığım nokta aslında ileride çok kayıt girildiğinde herhangi bir sorun çıkartmaması için en güzel yöntemi öğrenmek.Şöyle ki
Benim 3 ad. tablom var.
1.s_kartı-------->stok kartlarının tutulduğu tablom
2.s_islemleri----->stok işlemlerimi tutulduğu fişlerim master tablom
3.malalim--------->stok alış,stok satış işlemlerinin gerçekleştiği tablom
bu detay tablom
olay aslında basit fakat nasıl yabacağımı tam kestiremedim.Şimdi
ilk önce şunu söyliyim benim s_kartımda bir fieldimdaha var ekranda gösterdiğim Miktar bölümü. Olay şu stok ürünlerimin kalan miktarlarını bu hanede göstermek.nasıl yapabilrim. en mantıklı yolu nedir. ben yaptımda fakat tam gönlüm kanaat getirmedi.Yardımcı olursanoz sevinirim.Şimdiden herkese tşkler.
Herkese iyi çalışmalar diliyorum.Benim takıldığım bir nokta var .Bu takıldığım nokta aslında ileride çok kayıt girildiğinde herhangi bir sorun çıkartmaması için en güzel yöntemi öğrenmek.Şöyle ki
Benim 3 ad. tablom var.
1.s_kartı-------->stok kartlarının tutulduğu tablom
2.s_islemleri----->stok işlemlerimi tutulduğu fişlerim master tablom
3.malalim--------->stok alış,stok satış işlemlerinin gerçekleştiği tablom
bu detay tablom
olay aslında basit fakat nasıl yabacağımı tam kestiremedim.Şimdi
ilk önce şunu söyliyim benim s_kartımda bir fieldimdaha var ekranda gösterdiğim Miktar bölümü. Olay şu stok ürünlerimin kalan miktarlarını bu hanede göstermek.nasıl yapabilrim. en mantıklı yolu nedir. ben yaptımda fakat tam gönlüm kanaat getirmedi.Yardımcı olursanoz sevinirim.Şimdiden herkese tşkler.
hocam veritabano olarak ne kullanıyorsun
eğer firebird kullanmıyorsan bunu SP ile kolaylıkla yapabilirsin
veya tabloya bi tane calc alan ekleyim hesaplamayı runtime de yapabbilirsin
eğer firebird kullanmıyorsan bunu SP ile kolaylıkla yapabilirsin
veya tabloya bi tane calc alan ekleyim hesaplamayı runtime de yapabbilirsin
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
viewtopic.php?t=3138
hocam bu başlık işini görür zannedersem
bi zamanlar bende çok uğraşmıştım bu konnularda
hocam bu başlık işini görür zannedersem
bi zamanlar bende çok uğraşmıştım bu konnularda
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Trigger ile yapacak olursanız Insert, Edit ve Delete işlemleri için ayrı ayrı trigger yazacaksınız.
Tablonuzun yapısına göre yazacağınız trigger'lar değişecek. Örneğin stok hareket tablonuzda 'Miktar' ve 'İşlem türü' alanları varsa farklı, 'giriş miktarı', 'çıkış miktarı' alanları varsa farklı olur. İkisi için de Insert ile tetiklenecek Trigger örneği:
Edit:
Kolay gelsin...
Tablonuzun yapısına göre yazacağınız trigger'lar değişecek. Örneğin stok hareket tablonuzda 'Miktar' ve 'İşlem türü' alanları varsa farklı, 'giriş miktarı', 'çıkış miktarı' alanları varsa farklı olur. İkisi için de Insert ile tetiklenecek Trigger örneği:
Edit:
Kod: Tümünü seç
AS
begin
update S_Karti
set
miktar = miktar + new.gmiktar - new.cmiktar
where
Ad = new.StokAdi;
end
View konusunu da bi araştırın derim.u'lu coder editden önce yazdı:Kod: Tümünü seç
AS begin update s_karti (miktar) values (miktar + new.girisMiktari - new.CikisMiktari); end
gibi.Kod: Tümünü seç
AS declare variable ISLEMMIKTARI integer; begin if IslemTuru = 'G' then ISLEMMIKTARI = new.Miktar else ISLEMMIKTARI = - new.Miktar; update s_karti (miktar) values (miktar + ISLEMMIKTARI); end
Kolay gelsin...
En son ulu coder tarafından 24 May 2007 09:55 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
s.a
Ulucoder hocam cevabınız için tşkederim
fakat ben
çalıştıramadım.
Ulucoder hocam cevabınız için tşkederim
fakat ben
Kod: Tümünü seç
AS
begin
update s_karti
(miktar)
values
(miktar + malalim.gmiktar - malalim.cmiktar);
/* Trigger text */
end
Dehşet bir hata yapmışım, özür diliyorum.
update sorgusuna where eklememişim!
Bu durumda tüm stokların miktarını değiştirecek.
ikinci olarak, "update" ile "insert into"nun kullanımlarını da karıştırmışım.
Kod: Tümünü seç
update s_karti
set
miktar = miktar + new.gmiktar - new.cmiktar
where
adi = new.stokAdi;
İlk cevaptaki hatalar için tekrar özür diliyorum, aklım nerelerde bilmiyorum
s.a kusura bakmayın yine rahatsız ediyorum Hakkınızı helal edin.Evet Malalim tablom stok hareketidir.Yalnız burda yine bir durum gözüküyor gibi.
Biz burda (Miktar)yazan yeri tanımlamıyacağızmı veya s_kartına ait miktar bölümü olmayacakmı.
yazılıan kod şu:
neden olmuyor bu bende anlamadım.herhalde rahatsızlık verdim kusura bakmayın .çözmem lazım tekrardan hakkınızı helal edin.
Biz burda (Miktar)yazan yeri tanımlamıyacağızmı veya s_kartına ait miktar bölümü olmayacakmı.
yazılıan kod şu:
Kod: Tümünü seç
AS
begin
update malalim
set
miktar =miktar+new.gmiktar - new.cmiktar
where
adi = new.stokkodu;
end
s.a
bu trigger gayet güzel çalışıyor fakat bir sorun var
mesela malalimde bir kayıt girmişim o kayıtta gmiktar:=100 diyelim sonra kaydediyorum s_kartı tablomdaki miktar bölümüne atıyor. sonra aynı kaydın üzerine geliyorum.gmiktar=100 düye bunu 200 yapıyorum normalde oraya 200 atması gerekirken 200+100=300 atıyor ve bu her değişiklikde üstüne ekleyerek gidiyor. Bunu nasıl önleyebilirim.kolay gelsin
Kod: Tümünü seç
AS
begin
update s_karti
set
s_karti.miktar=s_karti.miktar+(new.gmiktar-new.cmiktar)
where
new.stokkodu=s_karti.s_kodu;
/* Trigger text */
end
mesela malalimde bir kayıt girmişim o kayıtta gmiktar:=100 diyelim sonra kaydediyorum s_kartı tablomdaki miktar bölümüne atıyor. sonra aynı kaydın üzerine geliyorum.gmiktar=100 düye bunu 200 yapıyorum normalde oraya 200 atması gerekirken 200+100=300 atıyor ve bu her değişiklikde üstüne ekleyerek gidiyor. Bunu nasıl önleyebilirim.kolay gelsin