slm arkadaşlar..
malumunuz bir ticari programda (ERP-MRP de olabilir) stok hareketleri ve cari hareketleri olur bunların bakiyesi 2 yöntemle hesaplanabilir biri stok hareketlerinden toplam giren ve toplam çıkanı hesaplatıp birbirinden çıkarırız diğeride trigerlarla hareketlere kayıt girme,silme,güncelleme olduğunda stok kartındaki bakiye alanına yazarız..
şimdi ben ilk şekilde yapıyorum ama eminim hareketlerdeki kayıt sayısı arttıkça program kafayı yiyecek stok bakiyesi gözüken bir ekranı açtığımda..
triger işine gelince satır bazında depo seçtiriyorum irsaliye veya faturada o işi nasıl yaparım acaba.bi alım faturasına adam iki satırada örn:kola yazıp birini depo-1'e diğerinide depo-2 ye atabiliyor.
bu işi nasıl yaparım ben şöyle düşündüm yine toplam bakiyeyi trigerla yapayım depo bazında rapor alınacaksa onuda stok hareketlerinden sadece seçilen depoya ait hareketlerden giren-çıkan yapıp bakiyeyi hesaplatayım.doğru bir yöntemmi acaba sizler nasıl yapıyorsunuz.
trigerla stok veya cari karta bakiye hesaplatma..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
s.a kendi yazdığım stok ve carihareketleri ile tam 6 trigger örneğini veiryorum size.
Kod: Tümünü seç
//carihareket delete triggera
AS
begin
if (old.alacak=0) then begin
update carikartlari set
carikartlari.borc=carikartlari.borc-old.borc
where
old.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
old.ckodu=carikartlari.c_kodu;
end
if (old.borc=0) then begin
update carikartlari set
carikartlari.alacak=carikartlari.alacak-old.alacak
where
old.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
old.ckodu=carikartlari.c_kodu;
end
/* Trigger text */
end
//Carihareket insert triggera
AS
begin
if (new.alacak=0) then begin
update carikartlari set
carikartlari.borc=carikartlari.borc+new.borc
where
new.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
new.ckodu=carikartlari.c_kodu;
end
else
if (new.borc=0) then begin
update carikartlari set
carikartlari.alacak=carikartlari.alacak+new.alacak
where
new.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
new.ckodu=carikartlari.c_kodu;
end
/* Trigger text */
end
////Cari hareket update triggera....
AS
begin
if (old.alacak=0) then begin
update carikartlari set
carikartlari.borc=carikartlari.borc-old.borc
where
old.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
old.ckodu=carikartlari.c_kodu;
end
if (new.alacak=0) then begin
update carikartlari set
carikartlari.borc=carikartlari.borc+new.borc
where
new.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
new.ckodu=carikartlari.c_kodu;
end
else
if (old.borc=0) then begin
update carikartlari set
carikartlari.alacak=carikartlari.alacak-old.alacak
where
old.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
old.ckodu=carikartlari.c_kodu;
end
if (new.borc=0) then begin
update carikartlari set
carikartlari.alacak=carikartlari.alacak+new.alacak
where
new.ckodu=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
new.ckodu=carikartlari.c_kodu;
end
---------------------------------------------------------------------------------
//şimdi stokareket triger delete
AS
begin
if (old.t='8') then begin
update carikartlari set
carikartlari.alacak=carikartlari.alacak-old.tutari
where
old.ckod=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
old.ckod=carikartlari.c_kodu;
end
if (old.t='9') then begin
update carikartlari set
carikartlari.borc=carikartlari.borc-old.tutari
where
old.ckod=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
old.ckod=carikartlari.c_kodu;
end
/* Trigger text */
end
/// Stok hareket trigger insert örneği
AS
begin
if (new.t='8') then
begin
update carikartlari set
carikartlari.alacak=carikartlari.alacak+new.tutari
where
new.ckod=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
new.ckod=carikartlari.c_kodu;
end
else
if (new.t='9') then
begin
update carikartlari set
carikartlari.borc=carikartlari.borc+new.tutari
where
new.ckod=carikartlari.c_kodu;
update carikartlari set
carikartlari.bakiye=carikartlari.borc-carikartlari.alacak
where
new.ckod=carikartlari.c_kodu;
end
/* Trigger text */
end
//stok hareket update triggarı
AS
begin
update s_karti
set
s_karti.miktar=s_karti.miktar -
(old.gmiktar - old.cmiktar)
where
old.stokkodu=s_karti.s_kodu;
update s_karti
set
s_karti.miktar=s_karti.miktar+(new.gmiktar-new.cmiktar)
where
new.stokkodu=s_karti.s_kodu;
/* Trigger text */
/* Trigger text */
end
kolay gelsin[quote][/quote]