Selam,
Yürüyen bakiye olayında rdb$set_context ve USER_TRANSACTION olayını araştırın, stored procedur e felan gerek kalmaz.
Aşağıda birebir kendi kullandığım SQL kodu bulunmaktadır. "Bakiy" field i yürüyen bakiyeyi verir. Kısaca önce #bky isminde bir değişken tanımlanıp ilk olarak sıfır'a "0" eşitleniyor, sonraki her satırda bunun üzerine borc eklenip alacak çıkartılıp tekrar set ediliyor, her satırda Bakiy değeri değişiyor.
Burada dikkat edilmesi gerekli husus ise şudur, BAKIYESIFIRLA isminde bir QUERY Cari hesap tablosundaki her hareket öncesi çalıştırılıyor ki #bky değişkeni Cari hesaplar gridinde her hareket edildiğinde sıfırlanabilsin. Kodu aşağıdadır.
Kod: Tümünü seç
SELECT rdb$set_context( 'USER_TRANSACTION' ,'bky#' ,0) from rdb$database;
Not:Bir blog da görmüştüm bu user_transaction olayını ama site adını hatırlamıyorum.
(Siteyi buldum :
http://www.boreas.gen.tr/firebirde-yuru ... unning-sum)
Kod: Tümünü seç
SELECT I.KOD, I.CARIKODU, I.ISLEMTURU, I.ISLEMTURUALT, I.ISLEMKODU, I.TARIH, I.BORC, I.ALACAK, I.ACIKLAMA, I.BAYIKODU, I.KULKODU, I.FOYKODU, I.ACIKLAMA1, I.DOVIZKODU, I.KUR, I.FATMI, I.VADETARIHI,
CASE
WHEN I.ISLEMTURU=0 THEN 'Devir Borç'
WHEN I.ISLEMTURU=1 THEN 'Devir Alacak'
WHEN I.ISLEMTURU=2 AND I.FATMI=1 THEN 'Satış Fat.'
WHEN I.ISLEMTURU=3 AND I.FATMI=1 THEN 'Alış Fat.'
WHEN I.ISLEMTURU=2 AND I.FATMI=0 THEN 'Satış Fişi'
WHEN I.ISLEMTURU=3 AND I.FATMI=0 THEN 'Alış Fişi'
WHEN I.ISLEMTURU=4 THEN '(Alacak)Tahsilat '
WHEN I.ISLEMTURU=5 THEN '(Borç) Ödeme'
END AS ISLEMADI,
CASE
WHEN I.ISLEMTURUALT=0 THEN ''
WHEN I.ISLEMTURUALT=1 THEN 'Nakit İşlem'
WHEN I.ISLEMTURUALT=2 THEN 'K.K. İşlemi'
WHEN I.ISLEMTURUALT=3 THEN 'Banka İşlemi'
WHEN I.ISLEMTURUALT=4 THEN 'Çek İşlemi'
WHEN I.ISLEMTURUALT=5 THEN 'Senet İşlemi'
END AS ISLEMADIALT,
CASE
WHEN I.BAYIKODU<=0 THEN 'Merkez'
WHEN I.BAYIKODU>0 THEN B.UNVAN
END AS BADI,
K.USERNAME AS KULADI,
D.KISALTMA AS DOV,
coalesce(CAST(rdb$get_context('USER_TRANSACTION','bky#' ) AS decimal(10,4) ),0) as Bakiy,
CAST(rdb$set_context('USER_TRANSACTION','bky#',coalesce(CAST(rdb$get_context('USER_TRANSACTION','bky#' )AS decimal(10,4) ),0)+ I.BORC - I.ALACAK )AS decimal(10,2) )as Set_Bakiye
FROM CARI_ISLEM I
LEFT JOIN DEPO B ON B.KOD=I.BAYIKODU
LEFT JOIN KULLANICI K ON K.KOD=I.KULKODU
LEFT JOIN DOVIZ D ON D.KOD=I.DOVIZKODU
WHERE I.CARIKODU =:KOD AND I.TARIH>=:T1 AND I.TARIH<=:T2 AND I.DOVIZKODU=:DKODU
ORDER BY I.TARIH, I.KOD