以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  还款计划  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=147108)

--  作者:裴保民
--  发布时间:2020/3/10 1:17:00
--  还款计划
假如有一张流水表字段有“记账日期”、‘应还金额’’、"已还金额"、“还款限期”,还款时我想实现:

(1)根据本次还款金额,优先还“还款限期”最近一笔交易,如果本次还款金额小于(最近一笔交易还款金额 - 已还金额 ) 时 ,执行"已还金额"+本次还款金
(2)如果本次还款金额大于(最近一笔还款金额 - 已还金额 ) 时 ,执行"删除最近一笔还款金额,如果本次还款金额还有余额就执行距离最近的下一笔交易,(同上)以此类推直至本次还款金额为零时为止。
该怎么实现此功能呢?

--  作者:有点蓝
--  发布时间:2020/3/10 9:02:00
--  
根据“还款限期”排序,然后遍历取值,如果还款金额小于待还,则执行"已还金额"+本次还款金,退出循环,否则继续循环下一行判断
--  作者:裴保民
--  发布时间:2020/3/10 10:46:00
--  
这段代码哪错运行后出错
Tables("应付交易明细").Sort = "还款限期"
Dim yue As  Double
Dim lst1 As New List(of DataRow)
Dim lst2 As New List(of DataRow)
For Each dr As DataRow In DataTables("应付交易明细").DataRows
    If DataTables("应付交易明细").Find("还款限期=\'" & ( dr("还款限期")) & "\'") Is Nothing Then    
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
For Each dr As DataRow In lst1 
lst1 =e.Form.Controls("hkjeNumericComboBox")-(dr("应还金额")-dr("已还金额"))
    dr.Delete
Next
For Each dr As DataRow In lst2
dr("已还金额") =lst1
Next


图片点击可在新窗口打开查看此主题相关图片如下:截图07.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:截图08.jpg
图片点击可在新窗口打开查看







[此贴子已经被作者于2020/3/10 10:46:38编辑过]

--  作者:有点蓝
--  发布时间:2020/3/10 11:49:00
--  
dim v1 as double =e.Form.Controls("hkjeNumericComboBox").value
Dim lst1 As New List(of DataRow)
For Each dr As DataRow In DataTables("应付交易明细").select("","还款限期")
if  dr("最近一笔还款金额") - dr("已还金额") > v1
dr("已还金额") = dr("已还金额") + v1
exit for
else
v1 = v1 - dr("已还金额")
lst1.add(dr)
end if
Next

For Each dr As DataRow In lst1 
 dr.Delete
Next

--  作者:裴保民
--  发布时间:2020/3/10 12:23:00
--  
怎么数据全给删除了呢?

图片点击可在新窗口打开查看此主题相关图片如下:截图09.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:截图10.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:截图11.jpg
图片点击可在新窗口打开查看


刚打开窗体运行时第一笔也没按还距离今天最近一次顺序还

Dim v1 As Double =e.Form.Controls("hkjeNumericComboBox").value
Dim lst1 As New List(of DataRow)
For Each dr As DataRow In DataTables("应付交易明细").Select("","还款限期")
If  dr("应还金额") - dr("已还金额") > v1
dr("已还金额") = dr("已还金额") + v1
Exit For
Else
v1 = v1 + dr("已还金额")-dr("应还金额") 
lst1.add(dr)
End If
Next
For Each dr As DataRow In lst1 
 dr.Delete
Next



[此贴子已经被作者于2020/3/10 12:58:55编辑过]

--  作者:有点蓝
--  发布时间:2020/3/10 14:15:00
--  
我测试没有问题。代码是按照还款限期,从小到大处理的

--  作者:裴保民
--  发布时间:2020/3/10 14:21:00
--  
已解决,误将应还款金额,写为已还款金额