以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]循环排单问题  (http://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的未排日期的订单顺延排在一天

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

--  作者:有点蓝
--  发布时间: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】,空循环什么都不做而已

else里面把n的值改了,就符合条件了
--  作者:michl
--  发布时间:2021/12/22 12:30:00
--  
逐行遍历的时候符合条件n<=10时执行一次赋值,往后遍历时n值是继续累加的,所以都不符合条件执行了,此时把n值定义为dr("交付量"),再重新累计循环。这么理解对吗
--  作者:有点蓝
--  发布时间:2021/12/22 13:35:00
--  
是的