Borçlu Listesi Oluşturma

1 2 3
23/04/2017, 08:39

esmerim33

Merhaba, birçok yerde arama yaptım ama istediğimi bulamadım. Access konusunda iyi değilim standart komutların ötesine geçemiyorum. müşteri ve hesap adında 2 ayrı tablom var. Kimlik id ile bağlantılı, hesap tablosunda HareketTipi ve Hareket alanları var. HareketTipi alanına BORÇ veya ÖDEME giriliyor. Hareket alanına da işlem tutarı giriyor. Sorgu ile Müşterilerin Hareketlerini gruplayarak toplam borçlarını ve toplam ödemelerini alabiliyorum. Benim istediğim Toplam Borçtan Toplam ödemeyi çıkartarak Kalan Bakiyeyi tek satırda göstertmek. Sizin için kolay olabileceğini düşünüyorum.

İstediğim Tablo;

Müşteri Adı     Müşteri Soyadı      Toplam Borç     Toplam Ödeme       Bakiye     

veritabanını ekte gönderdim. Yardımlarınızı bekliyorum.
23/04/2017, 10:45

C*e*l*o*y*c*e

örneğiniz ektedir inceleyin lütfen (ha bu arada Müşteri adı ve soyadı yerine TCNo gibi kimseye benzemeyen bir ayırıcı deger ile kontrol etmek en iyisi,misal Ali ÇELİK ten iki tane ayrı ayrı müşteri olursa hesap karışacaktır,bunun yerine TCNO kullanınız.) ben şimdilik adı ve soyadına göre ilişkilendirdim bilgin olsun
23/04/2017, 15:13

esmerim33

(23/04/2017, 10:45)C*e*l*o*y*c*e yazdı: örneğiniz ektedir inceleyin lütfen (ha bu arada Müşteri adı ve soyadı yerine TCNo gibi kimseye benzemeyen bir ayırıcı deger ile kontrol etmek en iyisi,misal Ali ÇELİK ten iki tane ayrı ayrı müşteri olursa hesap karışacaktır,bunun yerine TCNO kullanınız.) ben şimdilik adı ve soyadına göre ilişkilendirdim bilgin olsun

Çözüm için teşekkürler. Fakat Hiç ödemesi olmayanların isimleri gelmiyor. İlişkilendirmeleri, Kimlik alanlarına göre yaparsam isim soyisim benzerliğinden dolayı sorun olmaz diye düşünüyorum. Peki Hiç ödeme yapmayan veya ödeme yapıpta hiç borcu olmayanları nasıl gösterebilirim listede ?
23/04/2017, 16:43

atoz112

sayın esmerim33,

EK'te;
bahsettiğiniz talebinize yönelik olarak hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

NOT
bakiye_srg adlı sorguyu inceleyiniz.

bilginize...iyi çalışmalar,saygılar.
23/04/2017, 17:53

esmerim33

Sayın atoz112 kod için teşekkürler, Access kısmında tam istediğim gibi çalıştı. Sorguyu Delphi xe3'te AdoQuery ile çağırınca NZ komutunu tanımadı. Biraz araştırınca Jet Ole DB Provider'ın NZ fonksiyonunu desteklemediğini öğrendim. NZ kullanmadan yapabilir miyim diye araştırdım. 

SELECT ToplamBorclar.MusteriKimlik, ToplamBorclar.Adi, ToplamBorclar.Soyadi, ToplamBorclar.Cep, Sum(IIf(IsNull(borcum),0, borcum)) AS Toplam_Borc, Sum(IIf(IsNull(odemem),0, odemem)) AS Toplam_Odeme, [Toplam_Borc]-[Toplam_Odeme] AS kalanim
FROM ToplamBorclar LEFT JOIN ToplamOdeme ON ToplamBorclar.MusteriKimlik = ToplamOdeme.MusteriKimlik
GROUP BY ToplamBorclar.MusteriKimlik, ToplamBorclar.Adi, ToplamBorclar.Soyadi, ToplamBorclar.Cep;

Bu şekilde çalıştırdım delphi yine hata verdi
23/04/2017, 18:32

atoz112

sayın esmerim33,

ToplamBorclar adlı sorgunun içeriğini;

SELECT tblhesap.MusteriKimlik, tblmusteri.Adi, tblmusteri.Soyadi, tblhesap.HareketTipi, Sum(IIf(IsNull([Hareket]),0,[Hareket])) AS borcum
FROM tblmusteri INNER JOIN tblhesap ON tblmusteri.Kimlik = tblhesap.MusteriKimlik
GROUP BY tblhesap.MusteriKimlik, tblmusteri.Adi, tblmusteri.Soyadi, tblhesap.HareketTipi
HAVING (((tblhesap.HareketTipi)="BORÇ"));

ToplamOdeme adlı sorgunun içeriğini;

SELECT tblhesap.MusteriKimlik, tblmusteri.Adi, tblmusteri.Soyadi, tblhesap.HareketTipi, Sum(IIf(IsNull([Hareket]),0,[Hareket])) AS odemem
FROM tblmusteri INNER JOIN tblhesap ON tblmusteri.Kimlik = tblhesap.MusteriKimlik
GROUP BY tblhesap.MusteriKimlik, tblmusteri.Adi, tblmusteri.Soyadi, tblhesap.HareketTipi
HAVING (((tblhesap.HareketTipi)="ÖDEME"));

bakiye_srg adlı sorgunun içeriğini;

SELECT ToplamBorclar.MusteriKimlik, ToplamBorclar.Adi, ToplamBorclar.Soyadi, Sum(ToplamBorclar.borcum) AS Toplam_Borc, Sum(ToplamOdeme.odemem) AS Toplam_Odeme, [Toplam_Borc]-[Toplam_Odeme] AS kalanim
FROM ToplamBorclar LEFT JOIN ToplamOdeme ON ToplamBorclar.MusteriKimlik = ToplamOdeme.MusteriKimlik
GROUP BY ToplamBorclar.MusteriKimlik, ToplamBorclar.Adi, ToplamBorclar.Soyadi;

kodları ile değiştirmek sureti ile kullanmayı deneyiniz.bilginize...iyi çalışmalar,saygılar.
1 2 3