Foxtable(狐表)用户栏目专家坐堂 → [求助]扫描一个条码,把集合的行都增加了,但最后没有新增加行


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

主题:[求助]扫描一个条码,把集合的行都增加了,但最后没有新增加行

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]扫描一个条码,把集合的行都增加了,但最后没有新增加行  发帖心情 Post By:2016/6/14 17:15:00 [只看该作者]

[求助]扫描了一个条码把一个集合的条码都增加了,应该后面在增加一行才对,这样才可以扫描下一个条码。
发现扫描了一个条码,把整个条码对应的10行数据都增加成功了,但没有新增最后一行,导致没法接着扫下一个序列号。
KeyDownEdithe 和KeyDown都增加了新增行
If e.keyCode = Keys.Enter AndAlso e.Table.Cols(e.Table.colSel).Name = "SN" Then
    e.cancel = True
    e.Table.addnew
End If
datacolchanged代码:
Dim scsmy As WinForm.TextBox = Forms("生产入库").Controls("TextBox2")
Dim lb As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim gdhhh As WinForm.TextBox = Forms("生产入库").Controls("TextBox3")
Dim id As Integer = gdhhh.text.IndexOf("-")
Dim gdh As String = gdhhh.text.SubString(0,id)
If e.DataCol.name = "SN" Then
    Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","状态","产品态"}
    If e.NewValue Is Nothing Then
        For Each nm As String In nms
            e.DataRow(nm) = Nothing
        Next
    Else
        Select Case lb.text
            Case "2"
                e.DataRow.Save
                Dim rr1 As DataRow = DataTables("assemblyMiddle").SQLFind("item_ID = '" & e.DataRow("SN") & "'")
                If rr1 IsNot Nothing Then
                    Dim fdr As DataRow = DataTables("扫描配货明细").Find("SN = '" &  e.DataRow("SN") & "' And _Identify <> " & e.DataRow("_Identify"))
                    If fdr IsNot Nothing Then
                        If  fdr("状态") = "生产结束重复扫描"  Or fdr("状态") = "生产结束扫描完成" Then
                            e.DataRow("数量") = 0
                            e.DataRow("状态") = "生产结束重复扫描"
                            e.DataRow.save
                            e.DataRow.locked = True
                            Dim drr1 As DataRow = DataTables("生产扫描异常").Find("SN = '" &  e.DataRow("SN") & "'")
                            If drr1 Is Nothing Then
                                Dim drrr1 As DataRow = DataTables("生产扫描异常").AddNew
                                drrr1("数量") = 0
                                drrr1("SN") = e.DataRow("SN")
                                drrr1("状态") = "生产结束重复扫描"
                                drrr1.Locked = True
                            End If
                        End If
                    Else
                        Dim rr2s As List(of DataRow) = DataTables("assemblyMiddle").SQLSelect("id_Flag = '" & rr1("id_Flag") & "'")
                        SystemReady = False
                        For Each rr2 As DataRow In rr2s
                            Dim ndr As DataRow = DataTables("扫描配货明细").AddNew
                            Dim dr1 As DataRow = DataTables("assemblyProduct").SQLFind("deviceCode = '" & rr2("item_ID") & "' or productno = '" & rr2("item_ID") & "'")
                            If dr1 IsNot Nothing Then
                                ndr("SN") = rr2("item_ID")
                                Dim dr2 As DataRow = DataTables("assemblySubWorkOrder").SQLFind("SID = '" & dr1("subWorkOrder") & "'")
                                If dr2 IsNot Nothing Then
                                    ndr("工单行号") = dr2("LineFlag")
                                    Dim dr3 As DataRow = DataTables("assemblyWorkOrder").SQLFind("Id = '" & dr2("workOrder") & "'")
                                    ndr("生产订单号码") = dr3("WorkOrderNo")
                                    ndr("生产订单号码工单行号")= ndr("生产订单号码") & "-" & ndr("工单行号")
                                    ndr.Save
                                    If ndr("生产订单号码") = gdh Then
                                        Dim dr5 As DataRow = DataTables("assemblyScriptParamter").SQLFind("workOrderNo = '" & ndr("生产订单号码") & "' and lineFlag = '" & ndr("工单行号") & "'")
                                        If dr5 IsNot Nothing Then
                                            If dr5.IsNull("scriptval8") Then
                                                Dim kwlb As WinForm.ComboBox = Forms("生产入库").Controls("ComboBox1")
                                                Dim rklb As WinForm.ComboBox = Forms("生产入库").Controls("ComboBox2")
                                                ndr("库位类别") = kwlb.text
                                                ndr("入库类别") = rklb.text
                                                ndr("绑外SN") = e.DataRow("SN")
                                                ndr("数量") = 1
                                                ndr("状态") = "生产结束扫描完成"
                                                ndr("入库方式") = "扫描入库"
                                                ndr("生产结束扫描完成时间") = Date.now
                                                ndr("生产扫描员") = scsmy.text
                                                ndr.Save
                                            Else
                                                If dr1("status") = "-1" Then
                                                    Dim kwlb As WinForm.ComboBox = Forms("生产入库").Controls("ComboBox1")
                                                    Dim rklb As WinForm.ComboBox = Forms("生产入库").Controls("ComboBox2")
                                                    ndr("库位类别") = kwlb.text
                                                    ndr("入库类别") = rklb.text
                                                    ndr("绑外SN") = e.DataRow("SN")
                                                    ndr("数量") = 1
                                                    ndr("状态") = "生产结束扫描完成"
                                                    ndr("入库方式") = "扫描入库"
                                                    ndr("生产结束扫描完成时间") = Date.now
                                                    ndr("生产扫描员") = scsmy.text
                                                    ndr.locked = True
                                                    ndr.Save
                                                Else
                                                    ndr("数量") = 0
                                                    ndr("状态") = "不符合入库条件"
                                                    ndr.save
                                                    Dim drr12 As DataRow = DataTables("生产扫描异常").Find("SN = '" &  ndr("SN") & "'  and 生产订单号码工单行号 = '" & e.DataRow("生产订单号码工单行号") & "'")
                                                    If drr12 Is Nothing Then
                                                        Dim drrr12 As DataRow = DataTables("生产扫描异常").AddNew
                                                        drrr12("数量") = 0
                                                        drrr12("SN") = ndr("SN")
                                                        drrr12.Locked = True
                                                    End If
                                                End If
                                            End If
                                        End If
                                    Else
                                        ndr("状态") = "不是同一个工单"
                                        ndr.Locked = True
                                        ndr.save
                                    End If
                                End If
                            End If
                        Next
                        SystemReady = True
                        Dim lst1 As List(of DataRow) = DataTables("扫描配货明细").Select("绑外SN = '" & e.DataRow("SN") & "'")
                        For Each mdr As DataRow In lst1
                            If mdr("绑外SN") = e.DataRow("SN") Then
                                mdr("外内") = "外"
                            Else
                                mdr("外内") = "内"
                            End If
                            mdr.Locked = True
                            mdr.save
                        Next
                        e.DataRow.Delete
                    End If
                End If

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


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

 我测试这段代码没问题

 

If e.keyCode = Keys.Enter AndAlso e.Table.Cols(e.Table.colSel).Name = "SN" Then
    e.cancel = True
    e.Table.addnew
End If

 

 你直接执行代码 Tables("xxx").addnew 能新增行吗?


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


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

如果就一个SN,录入进去,会自动增加行。

如果是一个集合的SN,把集合所以的SN都录进去,就没有再增行。

 


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


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

哦。我单独在命令窗口执行Tables("扫描配货明细").addnew

提示出错。

.NET Framework 版本:2.0.50727.8689
Foxtable 版本:2015.12.22.1
错误所在事件:表,扫描配货明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。


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


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

尝试在这句代码后增加行

 

SystemReady = True

Tables("扫描配货明细").addnew

 

如果不行,最好还是做个小例子测试下


 回到顶部