Foxtable(狐表)用户栏目专家坐堂 → 关于日期分期


  共有11695人关注过本帖树形打印复制链接

主题:关于日期分期

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/22 10:20:00 [只看该作者]

Dim d As Date = #5/30/2011#
Dim d2 As Date = #5/1/2012#
Do While d < d2
    If d.day <> Date.DaysInMonth(d.year,d.month)
        d = new Date(d.year,d.month,Date.DaysInMonth(d.year,d.month))
    Else
        Dim d1 As Date = d
        d = d.Addmonths(1)
        If d1.day = Date.DaysInMonth(d1.year,d1.month) Then
            d = new Date(d.year,d.month,Date.DaysInMonth(d.year,d.month))
        End If
    End If
    output.show(d)
Loop


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  12楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/7/22 10:48:00 [只看该作者]

效果对的,让他们测试一下其它日期,谢谢你的帮忙.我越来越喜欢这个了.

 回到顶部
帅哥哟,离线,有人找我吗?
don
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/7/28 21:16:00 [只看该作者]

做了一个,似乎For ...Next 比 Do... Loop好点,后者增加行时有明显的跳跃感.

Dim Ls As String() = {"客户编号","客户名称","合同编号","本金","付息方式","方式","利率","合同现状"}
Dim d1,d2,d3,d As Date
Dim n,n1,i,y,m As Integer
Dim r1,r2 As Row
Dim t As Table

r1 = Tables("合同").Current
d1 = r1("计息开始时间")
d2 = r1("计息结束时间")
y = d1.year 
m= d1.month
d = New Date(y,m,Date.DaysInMonth(y,m))
n = DateDiff("m",d1,d2) + iif(d1< d,1,0)
t =Tables("利息")

t.StopRedraw
For i = 0 To n-1
    r2 = t.AddNew()
    For Each s As String In Ls
        r2(s) = r1(s)
    Next    
    If d1<d AndAlso i = 0 Then
        d2 = d1
        d3 = d
    Else
        n1 =iif(d1<d,i-1,i) 
        y = d.AddMonths(n1).year
        m = d.AddMonths(n1).month
        d2 = New Date(y,m,Date.DaysInMonth(y,m))
        y = d.AddMonths(n1+1).year
        m = d.AddMonths(n1+1).month
        d3 = New Date(y,m,Date.DaysInMonth(y,m))
    End If   
    r2("本期起息日") = d2
    r2("本期结息日") = d3
Next
t.ResumeRedraw

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  14楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/7/28 22:18:00 [只看该作者]

明日测试一下

 


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  15楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/7/29 7:53:00 [只看该作者]

测试了,好代码.就是没有老大的简单,老大的是有一条条闪过的问题.

 回到顶部
帅哥哟,离线,有人找我吗?
don
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/7/29 15:09:00 [只看该作者]

这样是否容易理解些:
Dim Ls As String() = {"客户编号","客户名称","合同编号","本金","付息方式","方式","利率","合同现状"}
Dim d1,d2,d As Date
Dim n,i As Integer
Dim r1,r2 As Row
Dim t As Table

r1 = Tables("合同").Current
d1 = r1("计息开始时间")
d2 = r1("计息结束时间")
n = Date.DaysInMonth(d1.year,d1.month)
d = New Date(d1.year,d1.month,n)
n = IIf(d.day<31,1,0)  
t =Tables("利息")

If d1<d Then
    r2 = t.AddNew()
    For Each s As String In Ls
        r2(s) = r1(s)
    Next
    r2("本期起息日") = d1
    r2("本期结息日") = d
End If
d= New Date(d.year,d.month-n,31)        

For i = n To DateDiff("m",d,d2)-1
    r2 = t.AddNew()
    For Each s As String In Ls
        r2(s) = r1(s)
    Next 
    r2("本期起息日") = d.AddMonths(i)
    r2("本期结息日") = d.AddMonths(i+1)
Next
[此贴子已经被作者于2011-7-29 18:35:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/8/3 19:31:00 [只看该作者]

看不懂用在哪里?能否给新手搞个范例,功德无量!!

 回到顶部
总数 17 上一页 1 2