以文本方式查看主题 - 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=173911) |
-- 作者:michl -- 发布时间:2021/12/22 10:04:00 -- [求助]循环排单问题 根据交付日期先后,假设每天最大交付量为10,我按照下面代码只可以把第二天的日期排出来。请问如果要把所有未排日期的一下全排出来,应该怎么改呢? For Each dr As DataRow In DataTables("任务").Select("排单日期 is null","交付日期") Dim n As Double n = n + dr("交付量") If n <= 10 Then dr("排单日期") = Date.Today.AddDays(1) End If Next |
-- 作者:有点蓝 -- 发布时间:2021/12/22 10:06:00 -- 计算逻辑是什么? |
-- 作者:michl -- 发布时间:2021/12/22 11:05:00 -- 按照交付日期先后顺序,把累计交付量不超过10的未排日期的订单顺延排在一天 |
-- 作者:有点蓝 -- 发布时间:2021/12/22 11:09:00 -- Dim n As Double dim d as date = Date.Today.AddDays(1) For Each dr As DataRow In DataTables("任务").Select("排单日期 is null","交付日期") n = n + dr("交付量") If n <= 10 Then dr("排单日期") = d else n = dr("交付量") d = d.AddDays(1) dr("排单日期") = d End If Next
|
-- 作者:michl -- 发布时间:2021/12/22 11:53:00 -- 谢谢!不过做为新手还是需要消化一下为什么加了else之后的才会继续循环呢 |
-- 作者:有点蓝 -- 发布时间:2021/12/22 11:56:00 -- 不改之前也会循环呀,只是不符合条件【If n <= 10 Then】,空循环什么都不做而已 |
-- 作者:michl -- 发布时间:2021/12/22 12:30:00 -- 逐行遍历的时候符合条件n<=10时执行一次赋值,往后遍历时n值是继续累加的,所以都不符合条件执行了,此时把n值定义为dr("交付量"),再重新累计循环。这么理解对吗 |
-- 作者:有点蓝 -- 发布时间:2021/12/22 13:35:00 -- 是的 |