以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 区间生成求助 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74574) |
||||
-- 作者:supwork -- 发布时间:2015/9/14 14:53:00 -- 区间生成求助
如上传附件
发货数据表的 有单号和序号(序号多数是连续的,但肯定有间断,且顺序是乱的)
需要在区间分布表 分析每一个单号的 序号区间分布状况。
如 单号 A101 有序号,1,2,3,4,8,9,10,11 则A101单号的区间分布为:1-4;8-11 |
||||
-- 作者:大红袍 -- 发布时间:2015/9/14 15:14:00 -- For Each dh As String In DataTables("发货数据").GetValues("单号") Dim drs As List(Of DataRow) = DataTables("发货数据").Select("单号 = \'" & dh & "\'", "序号") Dim str As String = "" Dim sidx As Integer = drs(0)("序号") For i As Integer = 1 To drs.count - 1 If drs(i)("序号") - drs(i-1)("序号") > 1 Then str &= sidx & "-" & drs(i-1)("序号") & ";" sidx = drs(i)("序号") End If Next str &= sidx & "-" & drs(drs.count-1)("序号") output.show(str) Next |
||||
-- 作者:supwork -- 发布时间:2015/9/15 11:57:00 -- 谢谢 ,代码相当精练,没有一个多余的动作。
再给写一个代码 进行库存批次发货处理
发货数据模型
库存表 产品 批次 数量 ID A P1 200 1 A P2 200 2 A P3 200 3 A P4 100 4 B P5 50 5 B P6 130 6 B P7 100 7 B P8 30 8 B P9 60 9
发货计划表 产品 计划数量 计划日期 A 500 2015-9-15 B 90 2015-9-15
现要求发货原则是 按批次先进先出为总原则。
为实现这一总原则可能有四个补充选项
选项1,严格先进先出,可多出(但不超过一批)。如A要出500,则出P1,P2,P3 三批600 多出了100.(100不足一箱可接受) 选项2,严格先进先出,可少出 如A要出500,则出P1,P2共二批 则少出100 选项3,严格先进先出,最后一箱补数时,不遵循批次先后。 如A要出500,则出P1,P2,P4 跳过P3 刚好500. 如果都不符合要求,则出余下 的最小一批次。 选项4,先进先出原则下,拼数量。 如 B 出90 则 出 P8,P9
[此贴子已经被作者于2015/9/15 12:08:51编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2015/9/15 21:21:00 -- 代码自己考虑一下,只提供思路
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=74612&skin=0
|