Hemen belirteyim Bakiye hesaplatma ile forumda yüzlerce soru ve cevap gördüm ama hiçbiri ile çözmedim. Berken arkaşımız calcfiled ile çözmüş ama ben bir aşamada takıldım.
Veritabanı şu şekilde
Kod: Tümünü seç
Kodu--BA---TUTAR
001------Borc---100
001------Borc----50
001------Alacak--20
Takıldıgım yer ( Access database'ini kullanıyoruz ) tutar fieldini TRANSFORM - PIVOT ile ayırıyorum. Borçları ve Alacakları farklı fielda aktarıyorum.
Sonuçta Gridde şu şekilde oluyor.
Kod: Tümünü seç
[b]Kodu--BA--------TUTAR------Borc------Alacak--[/b]
001------Borc-------100---------100---------0
001------Borc--------50----------50----------0
001------Alacak------20----------0-----------20
Carihareket.BORC dersem yemiyor, Police1.Borc dersem yine yemiyor.
Bu sonradan oluşan Borc ve Alacak kayıtları üzeerinde işlem yapabilmek için ne yapabilirim ?
Çektiğim SQL kodu
Kod: Tümünü seç
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('TRANSFORM sum(Format([CariHareket.Tutar],''Currency'')) as Tutaar');
AdoQuery1.SQL.add('SELECT CariHareket.Musterikodu, CariHareket.Tarihi as TARIH, CariHareket.islemtipi as TR, '+' First(CariHareket.Evrakno) AS Evrakno, CariHareket.izahat, sum(Format([CariHareket.Tutar],''Currency'')) AS Tutar, CariHareket.BorcAlacak, '+' CariHareket.ParaBirimi as PB, Police1.Plaka, Police1.RizikoAdresi, Police1.SigortaEttiren AS Sigortalı, Police1.GrupKodu, CariHareket.OzelKod1, '+' CariHareket.OzelKod2, Police1.TanzimTarihi, Police1.BaslangicTarihi, Police1.BitisTarihi, CariHareket.BK, CariHareket.PN, CariKart.Unvani, CariKart.Yetkili,CariKart.Tel1, CariKart.Tel2,'+' CariHareket.PN, CariKart.Faks, CariKart.GrupKodu , CariKart.OzelKod1, CariKart.OzelKod2 ');
AdoQuery1.SQL.add('FROM ((CariHareket LEFT JOIN Police1 ON (CariHareket.Musterikodu = Police1.MusteriKodu) AND '+'(CariHareket.PoliceSiraNo = Police1.SiraNo)) LEFT JOIN KrediKarti ON (CariHareket.Evrakno = KrediKarti.FormNo) and '+'(KrediKarti.TaksitVade = CariHareket.Vade) and (KrediKarti.TaksitTutari = CariHareket.Tutar) ) '+' LEFT JOIN CariKart ON CariHareket.Musterikodu = CariKart.Musterikodu ');
AdoQuery1.SQL.add('WHERE (CariHareket.Musterikodu like "'+edit1.text+'%") and (((CariHareket.DeleteUser)="" Or (CariHareket.DeleteUser) Is Null)) ');
if combobox1.ItemIndex = 1 then AdoQuery1.Sql.Add(' and (CariHareket.ParaBirimi="YTL") ');
if combobox1.ItemIndex = 2 then AdoQuery1.Sql.Add(' and (CariHareket.ParaBirimi="USD") ');
if combobox1.ItemIndex = 3 then AdoQuery1.Sql.Add(' and (CariHareket.ParaBirimi="EURO") ');
AdoQuery1.SQL.add('GROUP BY CariHareket.ParaBirimi ,CariHareket.Tarihi , CariHareket.Musterikodu, CariHareket.islemtipi, '+' CariHareket.izahat, CariHareket.BorcAlacak, CariHareket.ParaBirimi, Police1.Plaka, Police1.RizikoAdresi, Police1.SigortaEttiren, Police1.GrupKodu, '+' CariHareket.OzelKod1, CariHareket.OzelKod2, Police1.TanzimTarihi, Police1.BaslangicTarihi, Police1.BitisTarihi, '+' CariHareket.BK, CariHareket.PN, CariHareket.DeleteUser,CariHareket.DeleteDate , CariKart.Unvani, CariKart.Yetkili,CariKart.Tel1, CariKart.Tel2,'+' CariHareket.PN, CariHareket.Evrakno, CariKart.Faks, CariKart.GrupKodu, CariKart.OzelKod1, CariKart.OzelKod2');
AdoQuery1.SQL.add('ORDER BY CariHareket.ParaBirimi ,CariHareket.Tarihi ');
AdoQuery1.SQL.add('PIVOT BorcAlacak');