Yürüyen Bakiye

16/09/2025, 18:02

yenginoglu

Sayın hocalarım,

Power hocamın listBox ta rakamları sağa yaslama ve yine Power hocamın yürüyen bakiye kendi çalışmama uygulayamadım, çalışma ektedir. nerede hata yapıyorum bilemedim.

Saygılarımla,

Ahmet Yenginoğlu
16/09/2025, 23:09

atoykan

Ahmet Bey nerede hata aldığınız, ne sorun yaşadığınızı da belirtirseniz ilk fırsatta bakmaya çalışayım. Diğer hocalarımıza da bilgi notu olur yazmanız, benden önce ilgilenme fırsatları olursa bütün projenizi A'dan Z'ye incelemek zorunda kalmazlar. Power hocamızın çalışması yürüyen bakiye için net örneklerden birisi ve bir fonksiyona dayalıydı diye kalmış hafızamda, mantık olarak aynı yapıyı uyguladıysanız bir sorun yaşamamanız gerekir veya ufak tefek gözden kaçırdığınız detaylardan sorun yaşıyor olabilirsiniz diye düşünüyorum. Dosyanızı kahve molasında indiriverdim ama ne yazıkki hemen inceleme şansım yok.
17/09/2025, 08:10

yenginoglu

Hocam merhaba,

artan tarih ve B_TUTARI azalan olarak sıralama yaptırıyorum bakiye yanlış oluyor sıralamadan dolayı.

Birde hocam formdaki listbox sayılar sağa yaslanmıyor acaba ofis versiyonundan dolayı olabilir mi bilmiyorum.

Saygılarımla,
17/09/2025, 14:21

atoykan

Yürüyen Bakiye sorgusunda ORDER BY kısmı en can alıcı kısımdır, yoksa bakiye yanlış hesaplanır. Yürüyen Bakiyede mantık hesap ekstresi gibi Kronolojik tarih sıralaması, borç, alacak ve bakiye listelenemesidir. Bu bağlamda tarih küçükten büyüğe doğru sıralanır ve borç, alacak bu tarihlere göre işlenerek bakiye buna göre heaplanır. Siz mantığı tam tersi şekilde uygulamaya yani tarihi büyükten küçüğe sıralamaya çalıştığınızda doğal olarak hatalı bakiye sonucu alırsınız.
Bu çerçevede yapabileceğiniz 2 şey var:
  1. SQL sorgusunda yürüyen bakiye mantığını tarih küçükten büyüğe hesaplayacak şekilde bırakıp formdaki tablo veya raporda sıralamayı ters çevirebilirsiniz.Bunun için Formun RecordSource’unda veya tablo kontrolünde:
    Me.Detail.OrderBy = "TARIH DESC"
    Me.Detail.OrderByOn = True
    kodu uygulamak
    veya
  2. SQL sorgusunun sonuçlarını Geçici tabloya yazdırıp formu bu tabloya bağlayarak DESC ile sıralamak.

Örneğinizi halen inceleme fırsatı bulamadım ama mantık olarak sorununuzu anladığımı düşündüğüm için size en azından başlangıç noktası olması adına bilgi notu olarak paylaşmış olayım.
17/09/2025, 15:59

yenginoglu

merhaba hocam,

tarih desc i ilave ettim doğru sonuç verdi fakat hocam kuruşları hesaplamıyor.

saygılarımla,
19/09/2025, 11:49

atoykan

Yürüyen BAkiye için fonksiyonunuzu
Public Function BAK(GMN As Long, B As Variant, A As Variant) As Currency
If IsNull(B) Then B = 0
If IsNull(A) Then A = 0
If GLB_MN = GMN Then
GLB_Bakiye = GLB_Bakiye + B - A
Else
GLB_MN = GMN
GLB_Bakiye = B - A
End If
BAK = GLB_Bakiye
End Function
olarak gücelleyin. Burada Double kullanımı hatalı küsuratlı sayılarda hassasiyet kaybı olur. Gelir ve Gider kayıtlarınızın tablolarda da alanlarını Currency olarak ayarlar, form ve raporlarınızda da ilgili denetimlerin Format özelliğini "Currency" veya "#,##0.00" olarak ayarlarsanız sorununuz %99 çözülecektir. Halen sorun yaşıyoranız günce örneğinizi eklerseniz haftasonu fırsat bulup bakmaya çalışırım Ahmet Bey.