benim hareketler adında bir tablom var. bu tabloda borc ve alacak sütunları var. tabloda ek olarak bakiye sutunu oluşturdum. borc ve alacak sütünlarına girilen değerlere göre müşterinin bakiyesinin bakiye sütununda hesaplanmasını istiyorum.
yukarıda belirttiğim gibi dbgridte işlem yapmaya çalıştım ama bir türlü olmadı. formda bu konu ile alakalı mesajlara da baktım ama bir sonuca uluşamadım.
şimdidem teşekkürler.
s.a.
ttable bileşeninin üzerine iki kere tıklayın.
fields editör açılıyor orada sağ tıklayın newfield deyin.
newfield editör açılacak.
ordan alanın adını ve tipini belirtin. fieldtipi olarak calculated seçin.
tamam deyin kapatın.
sonra ttable bileşenini tekrar seçin oncalcfields olayına gelin ve burada bakiye hesaplama işlemini yapın.
selamlar;
aslangeri arkadaşımın dediği gibi yapacak olursanız maalesef istediğiniz sonuca ulaşamazsınız, çünkü (anladığım kadarıyla) siz bir kayda ait borç ve alacak verilerini tarih sırasında alt alta sıralayıp (alış faturası,satış fat., nakit tahsilat,nakit ödeme vs. gibi) her satırda da o tarihe (satıra) ait bakiyeyi görüntülemek istiyorsunuz sanırım.
Örn :
Satış faturası : 50 <B> Bakiye :50 <B>
Nakit Tahsilat : 20 <A> Bakiye :30 <B>
gibi.
bunun için ben şöyle bir yöntem kulanıyorum;
öncelikle yeni bir tablo(ekstre.db gibi) oluşturun, burda görmek istediğiniz alanları yazın;
KOD : INTEGER (AUTOINCREMENT)
TARIH : DATE (INDEXLI)
TURU : BYTE (0:ALIŞ FAT,1:SATIŞ FAT,2:NAKİT TAH,3:NAKİT ÖDEME)
TUTARI : CURRENCY
BAKIYE : CURRENCY
BAKIYETURU : ALFASAYISAL (10)
Bunu oluşturduktan sonra zaten işiniz bitmiş oluyor, raporla butonuna basılınca önce bu tabloyu temizleyip, sonra fatura, kasa vs. tablolardan bu kayda ait kayıtları tek tek bunun içine atın. Sonra bu tabloyu baştan sona saydırıp (eğer grid kullanıyosanız data source leri iptal edin), her satırda bakiyeyi hesaplayıp editle yazıp istediğiniz tarih aralığındaki bakiyeleri görüntüleyebilirsiniz.
aslangeri arkadaşımın dediğini zaten yapıyorum, dediğin gibi onun yazmış olduğu kod benim işimi pek görmüyor formda da bu konu için onun yazmış olduğu koddan çok vardı yinede tşk.
sizin verdiğiniz bilgiler ışığında birşeyler yapmaya çalışacağım. formda bulduğum bir kod var
"bakiye diye bir calcfield var oncaclcfileds a
Kod:
if fislerq.RecNo = 1 then toplam :=0;
toplam := toplam + fislerqborc.AsCurrency-fislerqalacak.AsCurrency;
fislerqbakiye.AsCurrency := toplam;"
bu kod benim aradığım kod sistemi ama çalıştıramadım.
Her ne kadar pratikte olsa calcfields lar sadece bi görüntüden ibaret ve pek tavsiye edilmez. Çünkü hesaplanan değerler veritabanına kaydedilmez sadece sütunda durur. Bence bunun için tabloda ayrı bir alan açıp kayıtları döngü sayesinde hesaplatıp yeni alana atarsan daha sağlam olur.
fikrinize katılıyorum, dediğinizi düşündüm ama kafamda tam toparlayamadım. söylediğinizi kodlara dökmek benim için biraz zor örnek kodunuz varsa iyi olurdu.
bakiye olayını quickreport ta hallettik benim gibi paradox tablosu kullanan arkadaşlar varsa tablo üzerinden halletmek biraz zor rapor sayfasından halletmet için aşağıdaki linki kullanabilirsiniz
Malesef Calculate alanlarda kümülatif toplam alıp göstermenin basit bir yolu yok. Özellikle DBGridler için. Liste hallinde sıralama yapıp kayıtların raporlanması en basit yol olacaktır. Bu gibi bir önceki kaydın değerinden etkilenen değerler olduğu durumlarda kayıt sayısı kadar elemana sahip bir dizi kullanmak olacak ve bunu iyi organize etmek gerekecektir.
Şaban Şahin AKMAN
_________________ Derin olan kuyu değil kısa olan iptir. - .