Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Divide value again
Message
From
24/07/2006 12:32:37
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Title:
Divide value again
Environment versions
Visual FoxPro:
VFP 9
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01139252
Message ID:
01139252
Views:
58
hi all,

any help to corret or fixit this code under,

i have problem with month 1,2, and month 9

if i start date as 01/01/2006 or 09/01/2006 or 02/01/2006... it works ,

and onther months it works for all dates..

but if i start with another date as 01/11/2006....etc for this 3 months ,1,2 and 9 i get
wrong compute for the first and end records at the grid,

for month 1 and 9 increase the value ,for month2 decrase the vlaue.

pls. try as under.

run it as
value =900
month=5
start date as =01/11/2005 or 02/11/2006 or 09/11/2006.


code
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
thanks.
Next
Reply
Map
View

Click here to load this message in the networking platform