with all cases the total it is ok now.but still if i start as
>>Public oForm >>oForm = Createobject('myForm') >>oForm.Show() >> >>Define Class myForm As Form >> DataSession = 2 >> Height = 300 >> Width = 480 >> >> Add Object label1 As Label With ; >> Caption = "Principal", Left = 20, Width = 50, Top = 25 >> Add Object label2 As Label With ; >> Caption = "Interest", Left = 20, Width = 50, Top = 55 >> Add Object label3 As Label With ; >> Caption = "Months", Left = 20, Width = 50, Top = 85 >> Add Object label4 As Label With ; >> Caption = "Start", Left = 20, Width = 50, Top = 115 >> Add Object txtprincipal As TextBox With ; >> Value = 100, Left = 80, Top = 25, Width = 100 >> Add Object txtinterest As TextBox With ; >> Value = 0, Left = 80, Top = 55, Width = 100 >> Add Object txtmonths As TextBox With ; >> Value = 12, Left = 80, Top = 85, Width = 100 >> Add Object txtstart As TextBox With ; >> Value = (Date()), Left = 80, Top = 115, Width = 100 >> Add Object cmdCalculate As CommandButton With ; >> Top = 145, Left = 80, Caption = "Go" >> Add Object grddistribution As Grid With ; >> Height = 280, Left = 190, Top = 5, Visible = .F., Width = 280 >> >> Procedure cmdCalculate.Click >> With Thisform >> lnPayment = Payment( .txtPrincipal.Value,; >> .txtInterest.Value,; >> .txtMonths.Value) >> Create Cursor crsDist (From d, To d, Amount Y) >> For ix=0 To .txtMonths.Value >> ldCurrent = Gomonth(.txtStart.Value,m.ix) >> ldFrom = Iif(m.ix = 0, m.ldCurrent, ; >> Date( Year(m.ldCurrent), Month(m.ldCurrent), 1)) >> ldTo = Iif(m.ix = .txtMonths.Value, m.ldCurrent,; >> Gomonth(m.ldCurrent,1)-Day(Gomonth(m.ldCurrent,1))) >> >>lnDaysInMonth = Day(Gomonth(m.ldCurrent,1)-Day(Gomonth(m.ldCurrent,1))) >> Do Case >> Case m.ix = 0 >> lnAmount = m.lnPayment * ((Day(m.ldTo)-Day(m.ldCurrent))/(m.lnDaysInMonth-1)) >> Case m.ix = .txtMonths.Value >> lnAmount = m.lnPayment * ((Day(m.ldCurrent)-1)/(m.lnDaysInMonth-1)) >> Otherwise >> lnAmount = m.lnPayment >> ENDCASE >> >> Insert Into crsDist (From,To,Amount) ; >> values ; >> ( m.ldFrom, m.ldTo,m.lnAmount) >> Endfor >> Locate >> .grdDistribution.RecordSource = 'crsDist' >> .grdDistribution.Visible = .T. >> Endwith >> Endproc >>Enddefine >> >>>>
> Procedure cmdCalculate.Click > With Thisform > lnPayment = Payment( .txtprincipal.Value,; > .txtinterest.Value,; > .txtmonths.Value) > Create Cursor crsDist (From d, To d, Amount Y) > For ix=0 To .txtmonths.Value > ldCurrent = Gomonth(.txtstart.Value,m.ix) > ldFrom = Iif(m.ix = 0, m.ldCurrent, ; > Date( Year(m.ldCurrent), Month(m.ldCurrent), 1)) > ldTo = Iif(m.ix = .txtmonths.Value, m.ldCurrent,; > Gomonth(m.ldCurrent,1)-Day(Gomonth(m.ldCurrent,1))) > Do Case > Case m.ix = 0 > lnLeft = 30 - (Day(m.ldTo)-Day(m.ldCurrent)) > lnAmount = m.lnPayment * ((Day(m.ldTo)-Day(m.ldCurrent))/30) > Case m.ix = .txtmonths.Value > lnAmount = m.lnPayment * (m.lnLeft/30) > Otherwise > lnAmount = m.lnPayment > Endcase > Insert Into crsDist (From,To,Amount) ; > values ; > ( m.ldFrom, m.ldTo,m.lnAmount) > Endfor > Locate > .grddistribution.RecordSource = 'crsDist' > .grddistribution.Visible = .T. > Endwith > Endproc >>PS: This is my final reply to it. Never really understood your calculation, just guessing.