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


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

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

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


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

好像我并没有把问题描述清楚。

配货和扫描顺序无关。只要保证扫到的这批货,不能有比他们其中任何一个在库生命周期长的。

比如需要配货100台。50台在库生命周期3天,100台在库生命周期2天。

那么在库生命周期为3天的50台是必须要全部扫到的。

然后还差50台,只能在在库生命周期为2天的100台找,随便找到了50台就可以了。

这样合起来就是100台。就符合要求。


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/6/25 14:21:00 [只看该作者]

那就改下查询条件

Select Case e.DataCol.name
    Case "SN"
        
        If Not e.DataRow.IsNull("SN")  Then
            Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("SN='{0}' and 订单号='{1}' and 物料编码='{2}' and 状态='入库完成'", e.NewValue,e.DataRow("订单号") ,e.DataRow("物料编码")),"在库生命周期 desc")
            If drs.Count > 0 Then
                Dim count As Integer = e.DataTable.Compute("count(sn)","订单号='" & e.DataRow("订单号") & "' and 物料编码='" & e.DataRow("物料编码") & "' and SN is not null")
                Dim dr As DataRow = DataTables("销售出库单").find("订单号='" & e.DataRow("订单号") & "' and 物料编码='" & e.DataRow("物料编码") & "'")
                If dr IsNot Nothing Then
                    If count >= dr("预发货数量") Then
                        dr("配货状态") = True
                        Return
                    End If
                    Dim fdr As DataRow
                    For i As Integer = 0 To drs.Count-1
                        fdr = drs(i)
                        fdr("状态") = "出库"
                        count += fdr("数量")
                        If count >= dr("预发货数量") Then
                            dr("配货状态") = True
                            Return
                        End If
                    Next
                End If
                
            End If
        End If
End Select

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


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

If Not e.DataRow.IsNull("SN")  Then
            Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("SN='{0}' and 订单号='{1}' and 物料编码='{2}' and 状态='入库完成'", e.NewValue,e.DataRow("订单号") ,e.DataRow("物料编码")),"在库生命周期 desc")

 

 

If Not e.DataRow.IsNull("SN")应该和If  (e.DataRow.IsNull("SN") = false) then 一样的吧。

 

Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("SN='{0}' and 订单号='{1}' and 物料编码='{2}' and 状态='入库完成'", e.NewValue,e.DataRow("订单号") ,e.DataRow("物料编码")),"在库生命周期 desc")----这一句是什么意思?怎么个用法?CExp

 


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


加好友 发短信
等级:版主 帖子:1693 积分:12123 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2016/6/25 14:47:00 [只看该作者]

管理软件前提是要有管理方法。 管理的目的是效益。 先进先出一般要和仓位管理相配合。 如果你的库存信息没有仓位信息,要库工用扫码来区别, 看库工不咬死你。

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


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

有仓位信息啊。就是库位编码。

有一个表在库数量统计。涉及到库位编码,物料编码,订单号,总数量。

就是系统已经告诉了扫描员应该到某几个库位编码去找设备,然后通过扫描的方式,系统提示是否符合出库要求。


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


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

Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("SN='{0}' and 订单号='{1}' and 物料编码='{2}' and 状态='入库完成'", e.NewValue,e.DataRow("订单号") ,e.DataRow("物料编码")),"在库生命周期 desc")----这一句是什么意思?怎么个用法?CExp

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/6/25 15:17:00 [只看该作者]


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


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

有2个需求。

1.符合发货要求的,配置扫描表,那个SN,状态改为配货完成。不符合出库要求的,状态改为不符合出库条件。

2.符合出库条件的SN,在库存明细表找到那个SN,状态改为配货完成,数量改为0.

 

问题。这个动态合成表达式,没扫一个SN,符合条件的不应该就一行么,不会有多行,用list合适么。因为后面你有用了for each 循环。

Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("SN='{0}' and 订单号='{1}' and 物料编码='{2}' and 状态='入库完成'", e.NewValue,e.DataRow("订单号") ,e.DataRow("物料编码")),"在库生命周期 desc")
For i As Integer = 0 To drs.Count-1
                        fdr = drs(i)
                        fdr("状态") = "出库"
                        count += fdr("数量")
                        If count >= dr("预发货数量") Then
                            dr("配货状态") = True
                            Return
                        End If
                    Next


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/6/25 16:48:00 [只看该作者]

不知道您的具体业务逻辑啊,代码操作差不多就哪个样子了,根据您具体情况进行修改。根据我的理解一个条码可以有多个批次也可以有多个数量的

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


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

物料编码就是设备的标示。理解为型号。

比如笔记本,型号为E460,这个就是我说的物料编码。同一个物料编码肯定有多个不重复的序列号SN。

然后呢,这个物料编码123是给订单aaa在上个月做了50台。这个月又给做了100台。

由于某些原因,这次只能发100台。那么就要求,上个月的50必须出掉,这个月100台随便出50台就可以了。扫描不用管先后顺序,随便扫。

 

你的代码。这个集合,涉及到SN,那不就是仅有一行么。SN都是不同的啊。不会出现重复的。

Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("SN='{0}' and 订单号='{1}' and 物料编码='{2}' and 状态='入库完成'", e.NewValue,e.DataRow("订单号") ,e.DataRow("物料编码")),"在库生命周期 desc")

[此贴子已经被作者于2016/6/25 16:59:10编辑过]

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