Skip to main content

AccessTr.neT


Yürüyen Bakiye uygulamamdaki problem

Yürüyen Bakiye uygulamamdaki problem

Çözüldü #6
Merhaba,
Bu uygulamamda ufak bir problem tespit ettim ama çözemedim bir türlü. Uygulama düzgün çalışıyor, yalnızca ufak bir yerde, sanırım global değişkende depoladığım bakiye bilgisini sıfırlayamadığından dolayı yanlış hesaplıyor. Ayrıntıları şöyle:

Yürüyen Bakiye sorgularını hazırladım (Aidat, Biriktirme ve İkraz için birer tane sorgu). Sorguların bakiye alanlarını -Aidat, Biriktirme ve İkraz için ayrı ayrı oluşturduğum- function'lardan dönen değerler oluşturuyor.

Benden istenen yürütme şekli (sadece AidatHareket ve BiriktirmeHareket için anlatıyorum):

İzahat=Devir ise Bakiye=Alacak olacak.
İzahat=Ödeme ise Bakiye=Bakiye+Alacak olacak.
İzahat=İade ise Bakiye=Bakiye-Borç olacak.

Bu şekilde çalışacak şekilde sorguyu hazırladım. Bu sorguyu bir forma bağladım (sorguya ID alanını ekledim mecburen, bu alan formda gizlenmiş olarak bulunuyor.). Form üzerine kayıt ekle, güncelle, kayıt sil butonları yerleştirdim. ID alanını kriter alarak tablo üzerinde güncelleme ve silme işlemlerini yaptırıp formu yeniliyorum. Tabi yeni kayıt ekleme işlemini de yaptırıp formu yeniliyorum. Bakiyeyi yeniden hesaplaması için birçok yerde Global değişkenleri sıfırlıyorum. Bu birçok yer gereğinden fazla olabilir. Tam olarak nerelerde yapmam gerektiğini kestiremediğim için aklıma gelen her yerde yaptım diyebilirim.

Problem şurada çıkıyor:

İzahat=Devir ise Bakiye=Alacak olduğu için, bu şekilde başlayan kayıtlarda hiçbir sıkıntı çıkmıyor. Çünkü bu noktada global bakiye değişkenini her seferinde düzeltiyor. Ama devir ile başlamayan kayıtlarda, güncelleme, ekleme, silme işlemi yaptığınızda, veya form üzerinde herhangi bir satıra tıkladığınızda bakiyelerin yanlış hesaplandığını göreceksiniz.

AidatHareket için bunu deneyin. Ekteki dosyayı açın. "Aidat Hareket" sekmesine tıklayın. Bakiyeler doğru hesaplanmış görünür (görünmeli). Şimdi satırlardan herhangi birine tıklayın veya alttaki butonlarla bir işlem yapın. Bakiyenin bozulduğunu göreceksiniz. Şimdi formdaki diğer sekmelerden birine tıklayın ve yine Aidat Hareket sekmesine tıklayın. Bakiyenin yine düzgün hesaplandığını göreceksiniz. Düzelmesinin sebebi, (yanlış anlamıyorsam) sekme denetiminin change event'ında global bakiye değişkenlerini sıfırlatmış olmamdır.

Şimdi yıl ay bilgisi Aidat Harekette görünen ilk kayıttan önce gelecek şekilde (6039 sicil için 2011-12'den önce) bir adet DEVİR kaydı ekleyin. Bakiyenin düzeldiğini göreceksiniz. Bu şekildeyken zaten daha sonra yanlış hesaplama yapmıyor.

Ama, ilk kaydı DEVİR olmayan kayıtlar olacak tabii ki. İşte bu nedenle bu sıkıntı aşmak istiyorum. Global Bakiye değişkenlerini başka nerede sıfırlatmalıyım ki hesabı yeni baştan yapsın bu durumlarda?

Ek Dosyalar
 YuruyenBakiye.rar(111.5 KB)


NOT 1: Eklediğim uygulama, üzerinde çalıştığım projeden kişisel bilgileri ve fazlalıkları çıkararak oluşturduğum bir uygulamadır. Görebildiğim kadarıyla -yukarıda bahsettiğim problem hariç- düzgün çalışmaktadır. Yani yürüyen bakiye uygulamasının forma uyarlanma şekliyle ilgili, forum üyelerine örnek teşkil edebilir diye düşünüyorum (hatalıysam affola).

NOT 2: Module1'deki diğer functionları silmekle uğraşmadım. Global Bakiye değişkenlerini sıfırlayan yordam en alttadır.

NOT 3: İkraz Hareket için yürütme şekli:

İzahat=Devir veya İzahat=İkraz ise Bakiye=Borç olacak (yani Aidat ve Biriktirmeden farklı olarak İzahat=İkraz ise de Bakiyeyi düzeltir.).
İzahat=Ödeme ise Bakiye=Bakiye-Alacak olacak.
İzahat=İade ise Bakiye=Bakiye+Borç olacak.

Edit:
NOT 4: Her kişinin ilk kaydını Devir=0 ile başlatmak da mümkün. Ama bunu problemi çözemezsem uygulatmak istiyorum.
Son Düzenleme: 02/01/2012, 21:05, Düzenleyen: WiniFred.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
Cvp: Yürüyen Bakiye uygulamamdaki problem - Yazar: WiniFred - 02/01/2012, 21:03
Task