Foxtable(狐表)用户栏目专家坐堂 → [求助]未将对象引用设置到对象的实例


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

主题:[求助]未将对象引用设置到对象的实例

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]未将对象引用设置到对象的实例  发帖心情 Post By:2015/12/18 11:15:00 [只看该作者]

If e.DataCol.name = "提示" Then
    If e.DataRow("提示") = "出库完成"  Then
        Dim dr As DataRow = DataTables("库存明细表").Find("SN = '" & e.DataRow("SN") & "'")
        If dr IsNot Nothing Then
            'dr("发货单号") = e.DataRow("发货单号")
            msgbox(3)
            dr("提示") = "出库完成"----------------弹出库存明细表未将对象引用设置到对象的实例
            msgbox(4)
            dr("出库扫描时间") = Date.now----------------弹出库存明细表未将对象引用设置到对象的实例
            msgbox(5)
        End If
    End If
End If

可是库存明细表的提示和出库扫描时间都已经修改正确了啊。怎么会冒出未将对象引用设置到对象实例?是哪里不对?

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


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

自己顶一下。

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


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

去看你的 库存明细表 的datacolchanged事件。你修改值的时候,会对应的触发事件啊


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


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

在库存明细表,发生变化的应该是SN,不应该是其它的吧。代码如下:

Dim kwbm As WinForm.TextBox = Forms("入库扫描").Controls("TextBox1")
If e.DataCol.Name = "SN" Then
    If e.DataRow("SN").contains("-") Then
        kwbm.value = e.DataRow("SN")
        e.DataRow("SN") = Nothing
    Else
        Dim nms() As String = {"SN","数量","物料编码","产品型号","类别","产品态","配货单号","工单号","订单号","预入库单号","生产完成日期","入库单号","库位号"}
        If e.NewValue Is Nothing Then
            For Each nm As String In nms
                e.DataRow(nm) = Nothing
            Next
        Else
            Dim drs As List(Of DataRow) = DataTables("待入库").Select("[SN] = '" & e.NewValue & "'")
            If drs.Count > 0 Then
                SystemReady = False
                For Each dr As DataRow In drs
                    Dim ndr As DataRow = e.DataTable.AddNew
                    Dim max As String
                    Dim idx As Integer
                    max = e.DataTable.Compute("Max(扫描顺序)")
                    If max > "" Then
                        idx = CInt(max) + 1
                    Else
                        idx = 1
                    End If
                    ndr("扫描顺序") = idx
                    If dr("入库提示") = "入库完成" Then
                        For Each nm As String In nms
                            ndr(nm) = dr(nm)
                        Next
                        ndr("提示") = "重复扫描入库"
                        dr("入库提示") = "入库完成"
                        ndr("库位编码") = kwbm.Value
                    Else
                        For Each nm As String In nms
                            ndr(nm) = dr(nm)
                        Next
                        If ndr("预入库单号") <> ndr("入库单号")  Then
                            ndr("提示") = "非本入库单物料"
                            ndr("库位编码") = kwbm.Value
                        Else
                            ndr("提示") = "入库完成"
                            dr("入库提示") = "入库完成"
                            ndr("库位编码") = kwbm.Value
                            ndr("入库结束日期") = Date.now
                            msgbox(6)
                            If ndr.GetChildRows("库位数量统计").Count = 0 Then
                                If ndr.IsNull("产品型号") Then
                                    Dim ddr2 As DataRow = DataTables("库位数量统计").Find("物料编码 = '" & ndr("物料编码") & "'")
                                    If ddr2 IsNot Nothing Then
                                        If ddr2("库位编码") = ndr("库位编码") Then
                                            ddr2("数量") = ddr2("数量") + 1
                                        Else
                                            Dim ddr3 As  DataRow = DataTables("库位数量统计").AddNew()
                                            ddr3("物料编码") = ndr("物料编码")
                                            ddr3("库位编码") = ndr("库位编码")
                                            ddr3("库位号") = ndr("库位号")
                                            ddr3("订单号") = ndr("订单号")
                                            ddr3("数量") = 1
                                            ddr3("产品态") = ndr("产品态")
                                        End If
                                        msgbox(7)
                                    Else
                                        Dim ddr1 As DataRow = DataTables("库位数量统计").AddNew()
                                        ddr1("物料编码") = ndr("物料编码")
                                        ddr1("库位编码") = ndr("库位编码")
                                        ddr1("库位号") = ndr("库位号")
                                        ddr1("订单号") = ndr("订单号")
                                        ddr1("产品态") = ndr("产品态")
                                        ddr1("数量") = 1
                                    End If
                                Else
                                    Dim ddr2 As DataRow = DataTables("库位数量统计").Find("物料编码 = '" & ndr("物料编码") & "' and 产品型号 = '" & ndr("产品型号") & "'")
                                    If ddr2 IsNot Nothing Then
                                        If ddr2("库位编码") = ndr("库位编码") Then
                                            ddr2("数量") = ddr2("数量") + 1
                                        Else
                                            Dim ddr3 As  DataRow = DataTables("库位数量统计").AddNew()
                                            ddr3("物料编码") = ndr("物料编码")
                                            ddr3("库位编码") = ndr("库位编码")
                                            ddr3("库位号") = ndr("库位号")
                                            ddr3("订单号") = ndr("订单号")
                                            ddr3("产品型号") = ndr("产品型号")
                                            ddr3("数量") = 1
                                            ddr3("产品态") = ndr("产品态")
                                        End If
                                    Else
                                        Dim ddr1 As DataRow = DataTables("库位数量统计").AddNew()
                                        ddr1("物料编码") = ndr("物料编码")
                                        ddr1("库位编码") = ndr("库位编码")
                                        ddr1("库位号") = ndr("库位号")
                                        ddr1("订单号") = ndr("订单号")
                                        ddr1("产品型号") = ndr("产品型号")
                                        ddr1("产品态") = ndr("产品态")
                                        ddr1("数量") = 1
                                    End If
                                End If
                            End If
                        End If
                    End If
                Next
                e.DataRow.Delete
                SystemReady = True
            Else
                e.DataRow("提示") = "序列号不存在"
            End If
        End If
    End If
End If

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


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

汗,提示列、出库扫描时间列的值改变了啊

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


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

具体是那段代码出错了?如何改掉,我仅仅想把这2列的值用新的值替换掉而已。并没有想让他触发事件。

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


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

那你可以暂停触发事件

 

http://www.foxtable.com/help/topics/2218.htm

 


 回到顶部