Foxtable(狐表)用户栏目专家坐堂 → [求助]先进的先出


  共有5005人关注过本帖树形打印复制链接

主题:[求助]先进的先出

帅哥哟,离线,有人找我吗?
huhu
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/6/26 6:18:00 [只看该作者]

我想到了一种思路,在配置整理表扫描SN。

首先先把,在库存明细表里面找出物料编码,订单号与销售出库单要求的物料编码,订单号一致,且状态为入库完成,在库周期DESC的所有行作为一个集合。

然后找出销售出库单要求的发货数量在这个集合的第多少行,比如销售出库单要求发货100,那么在这个集合里面找到第100行,那么就知道了这个第100行对应的在库时间周期了,比如是2.

然后在这个集合里面找在库生命周期是否有大于2的。如果有,那么在库生命周期大于2的SN肯定是要都是符合发货要求的且是必须要发走的。

那么如果扫到的SN,对应的的在库周期确实是大于2,那么就是符合要求的,状态变为配货完成。

然后计算出在库生命周期大于2的行有多少,比如有50,那么销售要求的发货数量100减去必须要发走的50,剩下的50那么必须是要求在在库生命周期为2的里找,只要扫的SN,对应的在库生命周期为2,且累计起来小于等于50.那都是符合发货要求,如果超过50了,那么扫到的SN是不符合发货要求的。

如果扫到的SN,对应的在库生命周期小于2,那么都是不符合发货要求的。只要是不符合发货要求的,状态都改为不符合出库要求。

 

这个思路应该是对的吧。就是怎么写合适了。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/26 14:15:00 [只看该作者]

 汗,本来的代码就没问题啊,你一行一行的增加就行啊。在库生命周期排序取出就行啊。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/6/26 14:25:00 [只看该作者]

你是说12楼的代码没问题?还是你发我例子的代码没问题?

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7236 积分:40603 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2016/6/26 14:33:00 [只看该作者]

要按入库批次才行了,每次出同种材料库存大于0的最早那一批,不足部分出库单上出下一批的,直到出够,关键按批次管理!

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7236 积分:40603 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2016/6/26 14:38:00 [只看该作者]

不分批怎么先进先出?我是这么干的:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=44144&skin=0

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/26 14:46:00 [只看该作者]

你这样拣货就是作死的节奏。

 

比如你有50个货物,放在1000个货物里面,你要出那50个货,最坏的打算,你是不是要把1000个货都扫一遍啊?

 

12楼的代码,就是你要的基本意义上的代码了,得到的数据,就是你要出货的数据,你扫描的时候,看在不在那堆数据里就行啊。

 

如果要再细分,你就先得出生命周期为3的,要多少件,生命周期为2的,要多少件。扫描到为2、3,都可以出库,直到最大值。

 

代码自己写。


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/6/26 14:51:00 [只看该作者]

一个前提条件我没说。

就是配货的时候,我已经做了,哪个物料编码,针对哪个订单,共计有多少台,在哪个库位编码上,库位编码就是物理位置。

扫描员是很精确的知道要找的设备在哪个位置的。不是随便乱找的。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/26 14:56:00 [只看该作者]

按照你的订单号、物料号,对数据表进行分组统计,按照生命周期分组,得到各个什么周期的个数。

 

从上到下,累加各个值,直到累加数大于出库数

 

那就得出生命周期为3的,要多少件,生命周期为2的,要多少件。扫描到为2、3,都可以出库,直到最大值。

 

代码自己写。

[此贴子已经被作者于2016/6/26 14:56:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/26 14:58:00 [只看该作者]

或者,参考12楼代码,先得出所有值。

 

再统计,生命周期3的,有几个;生命周期2的,有几个。

 

扫描到2、3,就累加1,直到扫满。


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/6/28 14:40:00 [只看该作者]

If e.DataCol.name = "SN" Then
    Dim nms2() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","状态","数量","MAC","HW","入库单号","库位类别","库位编码","收货完成时间","体态","SN"}
    If Not e.DataRow.IsNull("SN")  Then
        Dim mr As DataRow = DataTables("库存明细表").SQLFind("SN = '" & e.DataRow("SN") & "'")
        If mr IsNot Nothing Then
            For Each nm2 As String In nms2
                e.DataRow(nm2) = mr(nm2)
            Next
        Next
        Dim rs As List(Of DataRow) = DataTables("库存明细表").SQLGetValues("在库生命周期","订单号 = '" & Vars("xsddh") & "' And  物料编码 = '" & vars("chbm") & "' and (状态='入库完成' or 状态='配货完成')","在库生命周期" )
        Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("订单号='{0}' and 物料编码='{1}' and 状态='入库完成'", Vars("xsddh") ,vars("chbm")),"在库生命周期 desc")
        For Each dr As DataRow In drs
            Dim sum  As Integer
            sum = sum + dr("数量")
            If sum = '" & vars("zsl") & "' Then 'vars("zsl") 是需要发货的数量
                For cach r As Row In rs
                    If r("在库生命周期") > dr("在库生命周期") Then
                        Dim rts1 As List(of DataRow) = DataTables("库存明细表").SQLSelect("订单号 = '" & Vars("xsddh") & "' And  物料编码 = '" & vars("chbm") & "' and 状态='入库完成' and 在库生命周期 > = r("在库生命周期") ")
                        Dim rts2 As List(of DataRow) = DataTables("库存明细表").SQLSelect("订单号 = '" & Vars("xsddh") & "' And  物料编码 = '" & vars("chbm") & "' and 状态='入库完成' and 在库生命周期  = dr("在库生命周期") ")
                        Dim ct1 As Integer
                        ct1 = rtsl.count
                        Dim ct2 As Integer
                        ct2 = vars("zsl") - ct1
                    End If
                    Return
                Next
            End If
            If rts1.Contains(e.DataRow) Then
                e.DataRow("数量") = 1
                e.DataRow("状态") = "配货完成"
                e.DataRow.save
                Dim nr As DataRow = DataTables("库存明细表").SQLFind("SN = '" & e.DataRow("SN")")
                If nr IsNot Nothing Then
                    nr("状态") = "配货完成"
                End If
                Dim sum2 As Integer
                sum2 = sum2 + 1
                If sum2 > ct1 Then
                    e.DataRow("数量") = 0
                    e.DataRow("状态") = "重复扫描"
                End If
            End If
            If rts2.Contains(e.DataRow) Then
                Dim sum3 As Integer
                sum3 = sum3 + 1
                If sum3 < = ct2 Then
                    Dim lr As DataRow = DataTables("配货扫描").find("SN = '" & e.DataRow("SN") & "'", "_Identify <> '" & e.DataRow("_Identify") & "'" )
                    If lr IsNot Nothing Then
                        e.DataRow("数量") = 0
                        e.DataRow("状态") = "重复扫描"
                        e.DataRow.save
                    Else
                        e.DataRow("数量") = 1
                        e.DataRow("状态") = "配货完成"
                        e.DataRow.save
                    End If
                Else
                    e.DataRow("数量") = 0
                    e.DataRow("状态") = "不属于配货发货条件"
                    e.DataRow.save
                End If
                If rts1.Contains(e.DataRow) = False Or rts2.Contains(e.DataRow) = False Then
                    e.DataRow("数量") = 0
                    e.DataRow("状态") = "不属于配货发货条件"
                    e.DataRow.save
                End If
            End If
        End If
    Next
    Return
End If
Next
End If
End If

 

 我就按照这个思路来写,写不下去了。能帮忙给看看么。怎么写简单直观明了呢。一看就明白,我上面写的看着就头疼。


 


 回到顶部
总数 47 上一页 1 2 3 4 5 下一页