Foxtable(狐表)用户栏目专家坐堂 → [求助]关于某日期与不同时段日期对比的判断


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

主题:[求助]关于某日期与不同时段日期对比的判断

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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
[求助]关于某日期与不同时段日期对比的判断  发帖心情 Post By:2018/6/15 11:43:00 [只看该作者]

求助用代码计算出利息计算明细

从利率表的“利率更改日期”列取得日期
用个人借款表的当前行存款日期 对比 利率表的“利率更改日期”列的日期,逐行以年为间隔列出每行,
如果利息计算的“结束时间”列的相应行日期大于 利率表的“利率更改日期”列的相应期间日期,即等于利率表的“利率更改日期”列的相应期间日期
如EXCEL图的第5行,因为2004-2-10加1年后是2005-2-9,但因为利息表的变更日期为2004-5-1,所以不能是2005-2-9而改为2004-4-30.       同理第18行也是要少于利率表变更日期2017-4-1,所以该行改为2017-3-31

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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
  发帖心情 Post By:2018/6/15 11:46:00 [只看该作者]

相关表截图

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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
  发帖心情 Post By:2018/6/15 11:48:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:三表.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
  发帖心情 Post By:2018/6/15 11:50:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180615114623.png
图片点击可在新窗口打开查看

EXCEL图

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


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

思路:从开始日期一年一年累加生成每一行数据。累加一年之后,查找当年是否有利率修改(有多少次修改就增加多少行),然后开始日期、结束日期改变一下即可。

 

不会做请上传具体foxtable项目。


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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
  发帖心情 Post By:2018/6/15 11:55:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3_201806151151.zip


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


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

Dim dt1 As DataTable = DataTables("个人借款")
Dim dt2 As DataTable = DataTables("利率表")
Dim dt3 As DataTable = DataTables("利息计算")
For Each dr As DataRow In dt1.Select("")
    dt3.DeleteFor("单据编号='" & dr("单据编号") & "'")
    Dim d1 As Date = dr("存款日期")
    Dim d2 As Date = dr("归还日期")
    Dim d = d1
    Dim bj As Double= dr("借入金额")
    Dim kssj As Date = dr("存款日期")
    Dim jssj As Date = kssj.AddYears(1).AddDays(-1)
    Dim dr_nll As DataRow = dt2.Find("利率更改日期<#" & d & "#", "利率更改日期 desc")
    Do While d <= d2
        Dim nd = new Date(d.year, 1, 1)
        Dim drs = dt2.Select("利率更改日期>=#" & d & "# and 利率更改日期<#" & d.addyears(1) & "#")
        Dim nll As Double = dr_nll("年利率")
        Dim ndr As DataRow
        For Each cdr As DataRow In drs
            ndr = dt3.addnew
            ndr("单据编号") = dr("单据编号")
            ndr("本金") = bj
            ndr("开始时间") = kssj
            jssj = cdate(cdr("利率更改日期")).adddays(-1)
            ndr("结束时间") = jssj
            ndr("天数") = (jssj-kssj).TotalDays+1
            ndr("年利率") = nll
            ndr("利息金额") = bj*nll/100*ndr("天数")/365
            kssj=jssj.adddays(1)
            jssj=jssj.addyears(1)
            bj = bj+ndr("利息金额")
            dr_nll = cdr
            nll = cdr("年利率")
        Next
        ndr = dt3.addnew
        ndr("单据编号") = dr("单据编号")
        ndr("本金") = bj
        ndr("开始时间") = kssj
        ndr("结束时间") = jssj
        ndr("天数") = (jssj-kssj).TotalDays+1
        ndr("年利率") = nll
        ndr("利息金额") = bj*nll/100
        kssj=kssj.addyears(1)
        jssj=jssj.addyears(1)
        bj = bj+bj*nll/100
        d = kssj
    Loop
Next

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table


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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
  发帖心情 Post By:2018/6/15 17:37:00 [只看该作者]

非常非常感谢版主

这好些复杂,需要消化

用按钮测试上面代码,出现:

NET Framework 版本:2.0.50727.8784
Foxtable 版本:2018.3.9.1
错误所在事件:窗口,筛选树,Button4,Click
详细错误信息:
未将对象引用设置到对象的实例。

但利息计算明细还是出来了。


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180615172938.png
图片点击可在新窗口打开查看
但最后一行的日期去到2019年了,应该不能超过今天或归还日期列的日期
第二笔的利息明细没有出来



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


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

Dim dt1 As DataTable = DataTables("个人借款")
Dim dt2 As DataTable = DataTables("利率表")
Dim dt3 As DataTable = DataTables("利息计算")
For Each dr As DataRow In dt1.Select("")
    dt3.DeleteFor("单据编号='" & dr("单据编号") & "'")
    Dim d1 As Date = dr("存款日期")
    Dim d2 As Date = dr("归还日期")
    Dim d = d1
    Dim bj As Double= dr("借入金额")
    Dim kssj As Date = dr("存款日期")
    Dim jssj As Date = kssj.AddYears(1).AddDays(-1)
    Dim dr_nll As DataRow = dt2.Find("利率更改日期<#" & d & "#", "利率更改日期 desc")
    Do While d <= d2
        Dim nd = new Date(d.year, 1, 1)
        Dim drs = dt2.Select("利率更改日期>=#" & d & "# and 利率更改日期<#" & d.addyears(1) & "#")
        Dim nll As Double = 0
        If dr_nll IsNot Nothing Then nll=dr_nll("年利率")
        Dim ndr As DataRow
        For Each cdr As DataRow In drs
            ndr = dt3.addnew
            ndr("单据编号") = dr("单据编号")
            ndr("本金") = bj
            ndr("开始时间") = kssj
            jssj = cdate(cdr("利率更改日期")).adddays(-1)
            jssj = iif(jssj > dr("归还日期"), dr("归还日期"), jssj)
            ndr("结束时间") = jssj
            ndr("天数") = (jssj-kssj).TotalDays+1
            ndr("年利率") = nll
            ndr("利息金额") = bj*nll/100*ndr("天数")/365
            kssj=jssj.adddays(1)
            jssj=jssj.addyears(1)
            jssj = iif(jssj > dr("归还日期"), dr("归还日期"), jssj)
            bj = bj+ndr("利息金额")
            dr_nll = cdr
            nll = cdr("年利率")
        Next
        ndr = dt3.addnew
        ndr("单据编号") = dr("单据编号")
        ndr("本金") = bj
        ndr("开始时间") = kssj
        ndr("结束时间") = jssj
        ndr("天数") = (jssj-kssj).TotalDays+1
        ndr("年利率") = nll
        ndr("利息金额") = bj*nll/100
        kssj=kssj.addyears(1)
        jssj=jssj.addyears(1)
        jssj = iif(jssj > dr("归还日期"), dr("归还日期"), jssj)
        bj = bj+bj*nll/100
        d = kssj
    Loop
Next


 


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


加好友 发短信
等级:幼狐 帖子:111 积分:833 威望:0 精华:0 注册:2012/2/13 1:45:00
  发帖心情 Post By:2018/6/19 10:10:00 [只看该作者]

给我感觉是炉火纯青,行云流水
三个循还嵚套,干净利落,很经典
for each
do while
find
select
等的运用熟练
主要是帮助文件没有用foxtable对上述几个语句的专项使用教程,这个直接可以做教程用了图片点击可在新窗口打开查看



 回到顶部
总数 25 1 2 3 下一页