以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 【求助】求助时间指定 计算与累加 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108066) |
||||
-- 作者:李孝春 -- 发布时间:2017/10/15 17:44:00 -- 【求助】求助时间指定 计算与累加 求助: 1、如何根据还款日,账单日 自动制定账单期间 还款时间 为下一个月的对应日期 比如还款日是4号 对应还款时间为 2017-10-4 2、如果根据账单期间与分期数 生成分期明细对应的时间 分期序列 比如账单期间 2017-10-4 分期数为5 对应生成如下格式: 账单期间 分期序列 2017-11-4 1 2017-12-4 2 2018-1-4 3 2018-2-4 4 2018-3-4 5
[此贴子已经被作者于2017/10/15 17:44:48编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/10/15 17:52:00 -- 参考这个例子
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=65220&authorid=0&page=0&star=1
|
||||
-- 作者:李孝春 -- 发布时间:2017/10/15 20:06:00 -- 回复:(有点甜)参考这个例子 http://www.f... 有点甜老师 1、第一个问题已经参照他的根据账单日及还款日 对应生成本月账单日 及还款日期了 2、第二个问题尚未解决,继续求解! 如果根据账单期间与分期数 生成分期明细对应的时间 分期序列 比如账单期间 2017-10-4 分期数为5 对应生成如下格式: 账单期间 分期序列 2017-11-4 1 2017-12-4 2 2018-1-4 3 2018-2-4 4 2018-3-4 5 |
||||
-- 作者:有点甜 -- 发布时间:2017/10/15 20:38:00 -- For Each dr As DataRow In DataTables("账单分期").Select("") Dim fdr As DataRow = DataTables("银行卡信息").find("银行卡号 = \'" & dr("银行卡号") & "\'") Dim d As Date = dr("账单期间") d = new Date(d.year, d.Month, fdr("还款日")) For i As Integer = 1 To dr("分期数") Dim ndr As DataRow = DataTables("分期明细").find("银行卡号 = \'" & dr("银行卡号") & "\' and 还款期间 = #" & d.AddMonths(i) & "#") If ndr Is Nothing Then ndr = DataTables("分期明细").AddNew End If ndr("银行卡号") = dr("银行卡号") ndr("还款期间") = d.AddMonths(1) Next Next |
||||
-- 作者:李孝春 -- 发布时间:2017/10/15 21:17:00 -- 回复:(有点甜)For Each dr As DataRow In DataTabl... 经过扩展后代码成为如下:【想实现还款日如果小于账单日时,还款期间则加一个月】 For Each dr As DataRow In DataTables("账单分期").Select("") Dim fdr As DataRow = DataTables("银行卡信息").find("银行卡号 = \'" & dr("银行卡号") & "\'") Dim d As Date = dr("还款期间") d = new Date(d.year, d.Month, fdr("还款日")) Dim d1 As Date = dr("账单期间") d1 = new Date(d.year, d.Month, fdr("账单日")) For i As Integer = 1 To dr("分期数") Dim ndr As DataRow = DataTables("分期明细").find("银行卡号 = \'" & dr("银行卡号") & "\' and 还款期间 = #" & d.AddMonths(i) & "#") If ndr Is Nothing Then ndr = DataTables("分期明细").AddNew End If ndr("银行卡号") = dr("银行卡号") ndr("银行名称")=dr("银行名称") ndr("每月金额")=dr("每月金额") ndr("每月利息")=dr("每月利息") ndr("还款期间") = d.AddMonths(i) ndr("账单期间") = d1.AddMonths(i) ndr("分期序列")=0+i End If Next Next 代码运行后错误如下: 麻烦修整一下红色部分代码 If d<d1 Then ndr("还款期间") = d.AddDays(d("还款日")-1).AddMonths(1) Else ndr("还款期间") = d.AddDays(d("还款日")-1) End If [此贴子已经被作者于2017/10/15 21:25:15编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/10/15 21:25:00 -- 没看懂你的需求。你要这样写?
If d<d1 Then |
||||
-- 作者:李孝春 -- 发布时间:2017/10/15 21:39:00 -- 回复:(有点甜)没看懂你的需求。你要这样写?&nbs... 不一定要那样写 只要实现效果如下即可: 因为账单日是12日 还款日是1号 当账单日大于还款日的时候 还款日就要弄到下个月1号 比如2017-10-12日是账单期间 那么还款期间就应该是2018-11-1
[此贴子已经被作者于2017/10/15 21:48:52编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/10/15 21:49:00 -- For Each dr As DataRow In DataTables("账单分期").Select("") Dim fdr As DataRow = DataTables("银行卡信息").find("银行卡号 = \'" & dr("银行卡号") & "\'") Dim d As Date = dr("还款期间") d = new Date(d.year, d.Month, fdr("还款日")) Dim d1 As Date = dr("账单期间") d1 = new Date(d1.year, d1.Month, fdr("账单日")) For i As Integer = 1 To dr("分期数") Dim ndr As DataRow = DataTables("分期明细").find("银行卡号 = \'" & dr("银行卡号") & "\' and 账单期间 = #" & d1.AddMonths(i) & "#") If ndr Is Nothing Then ndr = DataTables("分期明细").AddNew End If ndr("银行卡号") = dr("银行卡号") ndr("银行名称")=dr("银行名称") ndr("每月金额")=dr("每月金额") ndr("每月利息")=dr("每月利息") If d<=d1 Then ndr("还款期间") = d.AddMonths(i+1) Else ndr("还款期间") = d.AddMonths(i) End If ndr("账单期间") = d1.AddMonths(i) ndr("分期序列")=0+i Next Next |
||||
-- 作者:李孝春 -- 发布时间:2017/10/15 21:59:00 -- 回复:(有点甜)For Each dr As DataRow In DataTabl... 有点填老师 按照你的代码完美运行 有点甜老师 在等待你回复的时间我检查了一下并参照下面的代码 \'\'If fdr("还款日") < fdr("账单日")Then \'\'ndr("还款期间") = d.AddDays(fdr("还款日")-1).AddMonths(1) \'\'Else \'\'ndr("还款期间") = d.AddDays(fdr("还款日")-1) \'\'End If 运行结果如下: 为什么会比原来的还款时间要大三天呢?原来是4号 现在是7号 是那里弄错了么?还是这样写根本就不对呢? |
||||
-- 作者:有点甜 -- 发布时间:2017/10/15 22:01:00 -- d.AddDays(fdr("还款日")-1).AddMonths(1)
这句代码的意思是
在d的基础上,先增加 4-1填,然后增加 一个月
|