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


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

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

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


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

请大红袍老师帮帮忙给看看。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


[此贴子已经被作者于2016/7/31 16:27:48编辑过]

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


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

最简单的代码

 

Select Case e.DataCol.name
    Case "SN"
        If Not e.DataRow.IsNull("SN")  Then
            Dim dr As DataRow = DataTables("库存明细表").find("SN = '" & e.DataRow("SN") & "'")
            If dr IsNot Nothing Then
            Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("订单号='{0}' and 物料编码='{1}' and 状态='入库完成'", dr("订单号") ,dr("物料编码")),"在库生命周期 desc")
                Dim count As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("订单号") & "' and 物料编码='" & dr("物料编码") & "' and SN is not null")
                Dim xs_dr As DataRow = DataTables("销售出库单列表").find("销售订单号 = '" & dr("订单号") & "'")
                If count >= xs_dr("数量") Then
                    xs_dr("配货状态") = True
                    msgbox("已经扫描完")
                    Return
                End If
               
                For Each fdr As DataRow In drs
                    If fdr("SN") = e.DataRow("SN") Then
                        fdr("状态") = "出库"
                        e.DataRow("订单号") = fdr("订单号")
                        e.DataRow("物料编码") = fdr("物料编码")
                        msgbox("SN可以出货")
                        Return
                    End If
                    count += fdr("数量")
                    If count >= xs_dr("数量") Then
                        msgbox("SN不能出货")
                        Return
                    End If
                Next
            End If
        End If
End Select


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


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

最好能增加重复扫描配货的判断。
比如输入SN为00315072808,是配货完成。再次输入00315072808,计算count。大于dr("数量"),状态能改完重复扫描配货

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


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

根据你的代码改的,现在可以按照先进先出。
问题是,如果SN配货完成了,再次输入同样的SN,应该是是配货重复扫描,怎就变为了不符合出库条件了呢。
输入同样的SN,弹出的是msgbox(3),而非msgbox(2),请帮忙看看红色的代码。
Dim yphsl As WinForm.Button = e.Form.Controls("Button5")
Dim bfhfh As WinForm.Button = e.Form.Controls("Button6")
Dim phwc As  WinForm.Button = e.Form.Controls("配货完成")
Select Case e.DataCol.name
    Case "SN"
        If Not e.DataRow.IsNull("SN")  Then
            Dim dr As Row = Tables("销售出库单列表").current
            Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("订单号='{0}' and 物料编码='{1}' and 状态='入库完成'", dr("销售订单号") ,dr("存货编码")),"在库生命周期 desc")
            If dr IsNot Nothing Then
                Dim count As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '配货完成' and SN is not null")
                
                If count >= dr("数量") Then
                    msgbox(4)
                    dr("配货状态") = True
                    e.DataRow("数量") = 0
                    Dim nr As DataRow = DataTables("库存明细表").SQLFind("SN = '" & e.DataRow("SN") & "'")
                    Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
                    For Each nm As String In nms
                        e.DataRow(nm) = nr(nm)
                    Next
                    e.DataRow("状态") = "不符合出库条件"
                    e.DataRow("在库生命周期") = nr("在库生命周期")
                    e.DataRow.save
                    Dim count2 As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件' and SN is not null")
                    bfhfh.text = "不符合出库SN有" & count2
                    Tables("配货整理_table4").Filter = "订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件'"
                    Return
                End If
                
                For Each fdr As DataRow In drs
                    If fdr("SN") = e.DataRow("SN") Then
                        Dim mr As DataRow = DataTables("配货扫描").find("SN = '" & e.DataRow("SN") & "' And  _Identify <> '" & e.DataRow("_Identify") & "'")
                        If mr IsNot Nothing Then
                            msgbox(2)
                            Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
                            For Each nm As String In nms
                                e.DataRow(nm) = fdr(nm)
                            Next
                            e.DataRow("状态") = "配货重复扫描"
                            e.DataRow("数量") = 0
                            e.DataRow.save
                            Return
                        Else
                            msgbox(1)
                            fdr("状态") = "配货完成"
                            fdr("配货完成时间") = Date.now
                            fdr("U8发货单号") = Vars("u8fhdh")
                            fdr("业务员") = dr("业务员")
                            fdr("货运单号") = dr("货运单号")
                            fdr("发货地址") = dr("发货地址")
                            fdr("数量") = 0
                            fdr.Save
                            Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
                            For Each nm As String In nms
                                e.DataRow(nm) = fdr(nm)
                            Next
                            e.DataRow("数量") = 1
                            e.DataRow("状态") = "配货完成"
                            e.DataRow("配货完成时间") = Date.now
                            e.DataRow("U8发货单号") = Vars("u8fhdh")
                            e.DataRow.save
                            Dim sum2 As Integer
                            sum2 = DataTables("配货扫描").SQLCompute("Sum(数量)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '配货完成'")
                            yphsl.text = "订单号:" & dr("销售订单号") & "+"  & "物料编码:" & dr("存货编码") & "已完成配货数量" & "=" & sum2
                            Return
                        End If
                    End If
                    count += 1
                    If count >= dr("数量") Then
                        msgbox(3)
                        e.DataRow("数量") = 0
                        Dim nr As DataRow = DataTables("库存明细表").SQLFind("SN = '" & e.DataRow("SN") & "'")
                        Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
                        For Each nm As String In nms
                            e.DataRow(nm) = nr(nm)
                        Next
                        e.DataRow("状态") = "不符合出库条件"
                        e.DataRow.save
                        Dim count3 As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件' and SN is not null")
                        bfhfh.text = "不符合出库SN有" & count3
                        Tables("配货整理_table4").Filter = "订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件'"
                        Return
                    End If
                Next
            End If
        End If
End Select

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


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


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


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

我是允许输入重复的SN值,只不过它的状态需要改完“配货重复扫描”

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


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

Select Case e.DataCol.name
    Case "SN"
        If Not e.DataRow.IsNull("SN")  Then
            Dim dr As DataRow = DataTables("库存明细表").find("SN = '" & e.DataRow("SN") & "'")
            If dr IsNot Nothing Then
                If dr("状态") = "出库" Then
                    e.DataRow("状态") = "重复"
                Else
                    Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("订单号='{0}' and 物料编码='{1}' and 状态='入库完成'", dr("订单号") ,dr("物料编码")),"在库生命周期 desc")
                    Dim count As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("订单号") & "' and 物料编码='" & dr("物料编码") & "' and SN is not null and 状态 = 'ok'")
                    Dim xs_dr As DataRow = DataTables("销售出库单列表").find("销售订单号 = '" & dr("订单号") & "'")
                    If count >= xs_dr("数量") Then
                        xs_dr("配货状态") = True
                        msgbox("已经扫描完")
                        Return
                    End If
                   
                    For Each fdr As DataRow In drs
                        If fdr("SN") = e.DataRow("SN") Then
                            fdr("状态") = "出库"
                            e.DataRow("订单号") = fdr("订单号")
                            e.DataRow("物料编码") = fdr("物料编码")
                            e.DataRow("状态") = "ok"
                            msgbox("SN可以出货")
                            Return
                        End If
                        count += fdr("数量")
                        If count >= xs_dr("数量") Then
                            msgbox("SN不能出货")
                            Return
                        End If
                    Next
                End If
            End If
        End If
End Select

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