以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 日期展期的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11718) |
-- 作者:blackzhu -- 发布时间:2011/8/9 11:00:00 -- 日期展期的问题 Dim Index1 As Integer Dim drs1 As List(Of DataRow) drs1 = DataTables("利息").Select("合同编号=\'" & rr("合同编号") & "\'And 本期结息日= #" & rr("计息结束时间").Addmonths(T) & "#") For Each dr1 As DataRow In drs1 Index1= Tables("利息").FindRow(dr1) If Index1> -1 Then \'如果找到此行 Tables("利息").Position = Index1 MessageBox.show("合同编号为:" & dr1("合同编号") & "现在开始分期了") Dim d1 As Date =Tables("利息").current("本期起息日") Dim d2 As Date =Tables("利息").current("本期结息日") Dim d As Date = d1 Dim days1 As Integer = d1.day Do While d1 < d2 Dim r As Row = Tables("利息").AddNew() r("客户编号")=Tables("合同").Current("客户编号") r("客户名称")=Tables("合同").Current("客户名称") r("合同编号")=Tables("合同").Current("合同编号") r("收据号")=Tables("合同").Current("收据号") r("本金")=Tables("合同").Current("本金") r("付息方式")=Tables("合同").Current("付息方式") r("方式")=Tables("合同").Current("方式") r("利率")=Tables("合同").Current("利率") r("合同现状")=Tables("合同").Current("合同现状") r("本期起息日") = d1 d1 = d1.addmonths(1) Dim days2 = Date.DaysInMonth(d1.year,d1.month) If d1.Day < days1 d1 = new Date(d1.year,d1.month,math.min(days2,days1)) End If If d1 > d2 Then \'如果d大于d2 d1 = d2 \'d等于d2 End If r("本期结息日") = d1 Loop 老大你帮我看看这段代码,我用对话框明明可以定位找到合同编号.但是新增行的合同号就是不对,比如 利息表里有002 和 003两个合同编号,对话框一一找到显示,但是分期的时候合同编号全部变成002了,起息日和结息日的分期也对的,就是合同编号不对.错哪儿啦. |
-- 作者:狐狸爸爸 -- 发布时间:2011/8/9 11:10:00 -- Dim Index1 As Integer Dim drs1 As List(Of DataRow) drs1 = DataTables("利息").Select("合同编号=\'" & rr("合同编号") & "\'And 本期结息日= #" & rr("计息结束时间").Addmonths(T) & "#") For Each dr1 As DataRow In drs1 Dim d1 As Date =dr1("本期起息日") Dim d2 As Date =dr1("本期结息日") Dim d As Date = d1 Dim days1 As Integer = d1.day Do While d1 < d2 Dim r As Row = Tables("利息").AddNew() r("客户编号")=Tables("合同").Current("客户编号") r("客户名称")=Tables("合同").Current("客户名称") r("合同编号")=Tables("合同").Current("合同编号") r("收据号")=Tables("合同").Current("收据号") r("本金")=Tables("合同").Current("本金") r("付息方式")=Tables("合同").Current("付息方式") r("方式")=Tables("合同").Current("方式") r("利率")=Tables("合同").Current("利率") r("合同现状")=Tables("合同").Current("合同现状") r("本期起息日") = d1 d1 = d1.addmonths(1) Dim days2 = Date.DaysInMonth(d1.year,d1.month) If d1.Day < days1 d1 = new Date(d1.year,d1.month,math.min(days2,days1)) End If If d1 > d2 Then d1 = d2 End If r("本期结息日") = d1 Loop Next |
-- 作者:blackzhu -- 发布时间:2011/8/9 11:20:00 -- 老大还是一样 |
-- 作者:狐狸爸爸 -- 发布时间:2011/8/9 11:23:00 -- 也许问题在这里:
r("客户编号")=Tables("合同").Current("客户编号")
你取的又不是dr1的合同编号,而是合同表当前行的合同编号,上面的代码看不出合同表的当前行有变动,自然合同编号都是一样的。
重新整理代码,理清逻辑和思路。 |
-- 作者:blackzhu -- 发布时间:2011/8/9 12:21:00 -- 我再看看. |
-- 作者:blackzhu -- 发布时间:2011/8/9 12:24:00 -- 上面你给我的思路,在中午我就想到估计是你现在提出的,解决了. |
-- 作者:blackzhu -- 发布时间:2011/8/9 12:27:00 -- r("客户编号")=dr1("客户编号")就可以了,逻辑错了. |