Foxtable(狐表)用户栏目专家坐堂 → 到期日期问题


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

主题:到期日期问题

帅哥哟,离线,有人找我吗?
温堡主
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:32 积分:353 威望:0 精华:0 注册:2016/1/5 22:08:00
到期日期问题  发帖心情 Post By:2017/7/30 10:51:00 [只看该作者]

求助:
一份合同有周期性的付款,付款的到期日期是每间隔几个月之后的前1天:如开始日期2015-12-01,间隔3个月,那么到期日期应为2016-02-29、2016-05-31、2016-08-31,,,如何建模写代码?
谢谢!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/30 11:01:00 [只看该作者]


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


加好友 发短信
等级:婴狐 帖子:32 积分:353 威望:0 精华:0 注册:2016/1/5 22:08:00
回复:(有点甜)addMonths(3).AddDays(-1)?...  发帖心情 Post By:2017/7/30 11:32:00 [只看该作者]

谢谢,,,可能我没有描述清楚问题,我开始也是写了这样的代码,但似乎不全对,不能根本解决连续计算的问题,,,比如单纯从2015-11-30开始算头不算尾的写addMonths(3).AddDays(-1),,,到期日依次变成:2016-2-29,2016-5-28,2016-8-27,,,所以再次请教求助是否可以这样做,思路如下:
1、根据3年的合同中的开始日期(如2015-11-30)与最终到期日期(如2018-11-29)),计算出每季度(3个月)的间隔次数N=11
2、对日期型建立数组(是否可以),得出StartDate(1)~StartDate(11),依次计算addMonths(3*N)
3、有了StartDate(N),对应的EndDate(0)~EndDate(10)依次为addMonths(3*N)-1

前面我试着试但做不出来,图片点击可在新窗口打开查看,,没有明白2018-11-29和2015-11-30怎么计算才能得出次数N=11

谢谢
[此贴子已经被作者于2017/7/30 11:42:53编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/30 11:53:00 [只看该作者]

代码没问题啊

 

Dim d As Date = "2015-11-30"
Dim d2 As Date = d.AddMonths(3).AddDays(-1)
Dim d3 As Date = d.AddMonths(3*1).AddDays(-1)
Dim d4 As Date = d.AddMonths(3*12).AddDays(-1)
msgbox(d4)

 

具体问题,请上传实例说明。


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


加好友 发短信
等级:婴狐 帖子:32 积分:353 威望:0 精华:0 注册:2016/1/5 22:08:00
  发帖心情 Post By:2017/7/31 7:23:00 [只看该作者]

好的,,,做了一个很小白的上传,想做但没学习够的地方想请老师指导指导先:

1、主表上的次数要能自动计算出来

2、明细表上期数根据每份合同的次数、开始日期、到期日期都自动生成

 

谢谢

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:到期日实例.table


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/31 9:26:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:到期日实例.table


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


加好友 发短信
等级:婴狐 帖子:32 积分:353 威望:0 精华:0 注册:2016/1/5 22:08:00
回复:(有点甜)[upload=table,到期日实例.table]vie...  发帖心情 Post By:2017/9/11 21:34:00 [只看该作者]

这个例子还有一处需要改进下的,可是我没找到修改的地方,是在哪里修改的?图片点击可在新窗口打开查看
如果开始日期为2011-12-23,到期日期为2014-12-22的间隔周期为1的话,次数应为36次,结果系统自动计算出来为35次,,

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/11 21:50:00 [只看该作者]

主表_DataColChanged事件

不足一个月的算一次么

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


加好友 发短信
等级:婴狐 帖子:32 积分:353 威望:0 精华:0 注册:2016/1/5 22:08:00
回复:(有点蓝)主表_DataColChanged事件不足一个月的...  发帖心情 Post By:2017/9/11 22:12:00 [只看该作者]

对,不足1个月的也是要算

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/11 22:47:00 [只看该作者]

Dim cs() As String = {"开始日期","结束日期","间隔周期", "合同号"}
If array.IndexOf(cs, e.DataCol.name) > -1 Then
    Dim flag As Boolean = True
    For Each c As String In cs
        If e.DataRow.Isnull(c) Then
            DataTables("明细表").DeleteFor("合同号 = '" & e.DataRow("合同号") & "'")
            flag = False
            Exit For
        End If
    Next
    If flag Then
        DataTables("明细表").DeleteFor("合同号 = '" & e.DataRow("合同号") & "'")
        Dim n As Integer = e.DataRow("间隔周期")
        Dim sd As Date = e.DataRow("开始日期")
        Dim ed As Date = e.DataRow("结束日期")
        Dim y,m,d As Integer
        DateYMD(sd, ed,y,m,d)
        Dim ms As Integer = (y*12+m)/n
        Dim d2 As Date
        Dim i As Integer
        For i = 1 To ms
            Dim ndr = DataTables("明细表").addnew
            ndr("合同号") = e.DataRow("合同号")
            ndr("期数") = i
            ndr("开始日期") = sd.AddMonths((i-1)*n)
            d2 = sd.AddMonths(i*n).AddDays(-1)
            ndr("到期日期") = d2
        Next
        If d2 < ed And d > 0 Then
            Dim ndr = DataTables("明细表").addnew
            ndr("合同号") = e.DataRow("合同号")
            ndr("期数") = i
            ndr("开始日期") = d2.AddDays(1)
            ndr("到期日期") = ed
        End If
    End If
End If
[此贴子已经被作者于2017/9/11 22:46:57编辑过]

 回到顶部
总数 14 1 2 下一页