Fiaz ve Alacak Toplamı --- Yardım....

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
adnansirca
Üye
Mesajlar: 135
Kayıt: 14 Kas 2005 12:24

Fiaz ve Alacak Toplamı --- Yardım....

Mesaj gönderen adnansirca »

Selamlar.....
Projemde dönemsel faiz hesabı yapıp bunu alacak toplamına eklemem gerekiyor....
Mantık Şöyle

Faiz Tablosu:

F_ilk_tarih F_Son_Tarih F_Oran
10.10.2001 10.11.2001 30
24.05.2002 02.07.2002 31
24.09.2002 03.12.2003 25
------ ------- ----
01.06.2006 -------- 20

Alacak Tablosu

Alacak Vade_Tarihi İşlem_Tarihi Faiz_Oranı İşleyen_Faiz
1000 01.02.2003 07.09.2006 ---- ------

Öncelikle İşlem tarihi ile vade tarihi arasındaki faiz dönemlerini bulmam gerekiyor....

///İşlem Tarihi ile Vade Arasında Döenemsel Faiz
veriler.FaizSQL.Close;
veriler.FaizSQL.SQL.Clear;
veriler.FaizSQL.SQL.Add('SELECT *from FAIZLER WHERE F_ilk_Tarih BETWEEN '''+VadeEdit.Date+''' AND '''+IslemEdit.Date+'''');
veriler.FaizSQL.Open;

{Buraya Kadar Herşey tamam ama listelediğim dönemlerde büyük tarihten küçük tarihe giderek her bir dönemin sonuna kadar işleyen faiz(alacak tablosunda belirtilen alacak miktarı ile dönemsel faiz oranını çarpmam sonucunda elde edeceğim faiz miktarıdır bu....) hesaplatıp bir önceki kayda gitmem ve yeniden dönem aralığındaki işleyen faizi hesap etmem gerekiyor. .}

Fikri olan varsa sevinirim....
Aslında bunu bir fonksiyona alabilmek benim için çok daha iyi olur ama yapamadım.....
Teşekkürler
adnansirca
Üye
Mesajlar: 135
Kayıt: 14 Kas 2005 12:24

Mesaj gönderen adnansirca »

procedure TVERILER.fiaztip(Sender: TField);////Faiz tip alanının //OnChange olayı
Var
if1,if2 : Double;
begin
if1 := 0; /// İşlem tarihi ile son faiz döneminin başlangıcı arasındaki faiz
veriler.FSQL.Close; ///FSQL faiz tablom
veriler.FSQL.SQL.Clear;
veriler.FSQL.SQL.Add('SELECT *From Faiz.dbf WHERE SONTARIH BETWEEN '''+DateToStr(frmyenikayit.vade.Date)+''' AND '''+DateToStr(frmyenikayit.takip.Date)+'''' ); //Şu .dbf uzantısını eklemeden yapabilir miyim bir de bukonuda yardım ederseniz....
veriler.FSQL.ExecSQL;
veriler.FSQL.Open;
veriler.FSQL.Last;
veriler.AlSQLFAIZORAN.AsVariant := veriler.FSQLORAN.AsVariant; ///faiz oranını alıyor...
if1 := veriler.AlSQLASILALACAK.AsCurrency * (Trunc(veriler.ASQLT_TARIH.AsDateTime - veriler.AlSQLVADE.AsDateTime)*veriler.FSQLORAN.AsVariant)/36000;
frmyenikayit.i1.Text := FloatToStrF(if1,ffCurrency,14,0); /// işlem-son döenm arası faiz....
veriler.AlSQLISLEMISFAI.AsCurrency := if1;
if2:= 0;////Döenmsel faiz.. Son döenmden Vade tarihine kadar
if veriler.FSQL.RecordCount = 0 then
Begin
Exit;
end
else
Begin
veriler.FSQL.Prior;
While Not veriler.FSQL.Bof Do
Begin
if2 := if2+veriler.AlSQLASILALACAK.AsCurrency*(Trunc(veriler.FSQLSONTARIH.AsDateTime - veriler.FSQLILTARIH.AsDateTime)*veriler.FSQLORAN.AsVariant)/36000;
veriler.FSQL.Prior;
End;
frmyenikayit.i2.Text := FloatToStrF(if2,ffCurrency,14,0);
veriler.AlSQLISLEMISFAI.AsCurrency := if1+if2;
end;
end;

bu şekilde bir kodla yapmaya çalıştım ama Alacak tablosunda ilk kayıtttan sonra Null hata veriyor..... Faiz tablosundaki sorgulamayı incelediğimde sorgu sonucunda boş kayıt verdiğini görüyorum......

...... Lütfen bir öneri ..........
Cevapla