Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Divide value again
Message
De
24/07/2006 12:32:37
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Divide value again
Versions des environnements
Visual FoxPro:
VFP 9
Database:
Visual FoxPro
Divers
Thread ID:
01139252
Message ID:
01139252
Vues:
59
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.
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform