以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  刷新时提示未将对象引用设置到对象的实例  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=82465)

--  作者:judyhu2008
--  发布时间:2016/3/18 11:23:00
--  刷新时提示未将对象引用设置到对象的实例
我有一个采购到货单列表,当我到货单有一个空行,刷新的时候会提示说
我改了几次代码还是这样,大大帮我看一下吧,谢谢啦
图片点击可在新窗口打开查看

以下是刷新的代码:
------------------------------------------------------
DataTables("采购到货单").LoadFilter = ""
DataTables("采购到货单").Load

以下是我Datacolchanged的代码:
-------------------------------------------------------
Select Case e.DataCol.name
    Case "到货时间"
        Dim dr As DataRow = DataTables("订单明细").Find("订单编号 = \'" & e.DataRow("订单编号") & "\' AND 存货编码 = \'" & e.DataRow("存货编码") & "\' AND 规格型号 = \'" & e.DataRow("规格型号") & "\'")
        If dr IsNot Nothing Then
            dr("到货时间") = e.DataRow("到货时间")
        End If
    Case "入库日期"
        If e.DataRow("入库日期") IsNot Nothing Then
            If e.DataRow("存货编码") IsNot Nothing Then
                e.DataRow("累计入库数量") = DataTables("入库明细").Compute("Sum(数量)","[订单编号] = \'" & e.DataRow("订单编号") & "\' AND [存货编码]=\'" & e.DataRow("存货编码") & "\' AND [规格型号]=\'" & e.DataRow("规格型号") & "\'")
                Dim dr1 As DataRow = DataTables("订单明细").Find("订单编号 = \'" & e.DataRow("订单编号") & "\' AND 存货编码 = \'" & e.DataRow("存货编码") & "\' AND 规格型号 = \'" & e.DataRow("规格型号") & "\'")
                e.DataRow("未入库数量") = dr1("数量") - e.DataRow("累计入库数量")
            End If
        Else
            MessageBox.Show("你还有未输入的到货单,请核对后再刷新")
            e.cancel=True
        End If
End Select

--  作者:狐狸爸爸
--  发布时间:2016/3/18 12:34:00
--  

应该:

 

                If dr1 IsNot Nothing Then
                    e.DataRow("未入库数量") = dr1("数量") - e.DataRow("累计入库数量")
                End If

 

另外判断空值的方法不对,正确的方法:

 

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

 

 

综合起来,应该:

 

Select Case e.DataCol.name
    Case "到货时间"
        Dim dr As DataRow = DataTables("订单明细").Find("订单编号 = \'" & e.DataRow("订单编号") & "\' AND 存货编码 = \'" & e.DataRow("存货编码") & "\' AND 规格型号 = \'" & e.DataRow("规格型号") & "\'")
        If dr IsNot Nothing Then
            dr("到货时间") = e.DataRow("到货时间")
        End If
    Case "入库日期"
        If e.DataRow.Isnull("入库日期")= False Then
            If e.DataRow.Isnull("存货编码") = False Then
                e.DataRow("累计入库数量") = DataTables("入库明细").Compute("Sum(数量)","[订单编号] = \'" & e.DataRow("订单编号") & "\' AND [存货编码]=\'" & e.DataRow("存货编码") & "\' AND [规格型号]=\'" & e.DataRow("规格型号") & "\'")
                Dim dr1 As DataRow = DataTables("订单明细").Find("订单编号 = \'" & e.DataRow("订单编号") & "\' AND 存货编码 = \'" & e.DataRow("存货编码") & "\' AND 规格型号 = \'" & e.DataRow("规格型号") & "\'")
                If dr1 IsNot Nothing Then
                    e.DataRow("未入库数量") = dr1("数量") - e.DataRow("累计入库数量")
                End If
            End If
        Else
            MessageBox.Show("你还有未输入的到货单,请核对后再刷新")
            e.cancel=True
        End If
End Select

 

 

 

 

 

 

[此贴子已经被作者于2016/3/18 12:34:02编辑过]

--  作者:judyhu2008
--  发布时间:2016/3/18 16:50:00
--  
 谢谢狐爸,现在OK了