İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

ADOQuery ile Sadece Borcu Olan Müşteriler

ramcet

0
İyinet Üyesi
Katılım
27 Temmuz 2010
Mesajlar
2
Reaction score
0
Arkadaşlar, Access'de detay tabloların dışında üç adet önemli tablom var. musteri, odemeler, isler tabloları. ben [delphi] rave'de sadece borcu olan müşterileri vermek için bunu tek sql'de bitirmek istiyorum.

bütün müşterilerim bayi kodları ile alış-veriş yaptıkları bayilere bağlılar.

musteri tablosunda müşterilerin bilgileri var.

odemeler de müsterinin yaptığı ödemeler.

isler ise biraz karışık.

isler tablosunda alış, alış iade, satış, satış iade değerlerini alabilecek bir bölüm var. ben buradan satış olanların sip_tutar bölümlerini borç olarak alıp satış iade olanlar ile de odemeleri toplayıp borçlu olanları çıkartmak istiyorum.

yani ödeme, satın alma ve iade etme durumlarından kaynaklanan para durumlarını toplayım bakiye çıkartmayı ve bakiyesi eksi durumda olanları raporlamak istiyorum.

muşahhas bir misal üzerinden gidecek olursak:

işler tablosundaki işlem türü "Satış" olan kayıtların sip_tutar2 bölümleri BORC olarak toplanacak. mesela bir müşteri 15.05.2010 tarihinde 1.000, 22.05.2010 tarihinde de 6.000 TL lik mal alımı yapmış olsun. müşterimizin borcu 7.000 TL dir.

yine işler tablosunda işlem türü "Satış İade" olan kayıtların sip_tutar2 bölümleri IADE olarak toplanacak. müşterimiz 06.01.2010 tarihinde 500 TL, 10.06.2010 tarihinde de 250 TL lik iade de bulunsun. toplam IADE tutarımız 750 TL olacaktır.

odemeler tablosuna gelince burada yine bayi kodu, musteri kodu bölümleri var ve diğer tablolardaki gibi ödemenin hangi müşteri tarafında hangi bayiye yapıldığını anlıyoruz. buradaki odeme_tutar kısımlarını da ODEMETOP olarak topluyoruz. yine aynı müşterimiz 01.07.2010 tarihinde 3.000 ve 10.07.2010 tarihinde de 500 TL ödeme yapmış olsun. ODEMETOP 3.500 TL olacak.

hesapladığımız bu üç değeri toplayıp çıkararak BAKIYE değerine ulaşıyoruz. BAKIYE = ODEMETOP+IADE-BORC. örneğimizde BAKIYE = 3500+750-7000. yani BAKIYE = -2750. yani müşterimiz borçlu. BAKIYE >= 0 olan müşterileri getirmek istiyoruz.
 

dynamicube

0
İyinet Üyesi
Katılım
10 Ağustos 2010
Mesajlar
36
Reaction score
0
Merhaba,

Tam sorgu için tablolar ve bir miktar da veri olsaydı sanırım sorunuza çoktan cevap yazılırdı :) join kullanılarak yapılabilir, ilaveten isler tablosunda tutarı sadece "tutar" alanında tutuyorsanız join kullanımı şart olacak. Alternatif olarak tutar kısmını "borc_tutar" ve "alacak_tutar" şeklinde 2 field'ta tutuyorsanız sorununuz join kullanmadan sum(borc_tutar)-sun(alacak_tutar) şeklindeki kullanımla da halledilebilir. Böyle olması durumunda performans kazanımı da elde edeceğinizi düşünüyorum.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst