以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  选最后一行的时候提示,未将对象引用设置到对象的实例。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=125734)

--  作者:yetle
--  发布时间:2018/10/5 14:08:00
--  选最后一行的时候提示,未将对象引用设置到对象的实例。

DoubleClick:

If Forms("生产制造单").Opened Then
Dim tb As Table = Tables("选择销售明细尺码_Table1")
Dim tbl1 As Table = Tables("生产制造单_Table1")
Dim pd As WinForm.ComboBox = Forms("生产制造单").Controls("ComboBox7")
Dim dt2 As DataTable = Tables("生产制造单_Table2").DataTable
For  i As Integer=tb.BottomPosition To tb.TopPosition Step -1

Dim str1 As String = "XS,S,M,L,XL,2XL,3XL,4XL,5XL,6XL,F,XF"
Dim str2 As String = "65,70,75,80,85,90,95,100"
    Dim fdr As DataRow = dt2.Find("销售明细行ID = \'" & tb.Current("销售明细行ID") & "\' ")
    If fdr Is Nothing Then
        fdr = dt2.AddNew
        fdr("生产单号") = tbl1.Current("生产单号")
        fdr("订单号")=tb.Current("订单号")
        fdr("款号")=tb.Current("款号")
        fdr("颜色")=tb.Current("颜色")
        fdr("杯型")=tb.Current("杯型")
        fdr("要求货期")=tb.Current("要求货期")
        fdr("款号ID")=tb.Current("款号ID")
        fdr("物供号")=tb.Current("物供号")
        fdr("销售明细行ID")=tb.Current("销售明细行ID")
        tb.Current("已安排制单")=True
    For Each s As String In str1.Split(",")
        If tb.Cols.Contains("衣裤尺码明细_" & s) Then
            fdr("衣裤尺码明细_" & s)=val(tb.Current("衣裤尺码明细_" & s))
        End If
    Next
    For Each s As String In str2.Split(",")
        If tb.Cols.Contains("文胸尺码明细_" & s) Then
            fdr("文胸尺码明细_" & s)=val(tb.Current("文胸尺码明细_" & s))
        End If
    Next
  End If
Next
        Syscmd.Table.Lock()
        dt2.save

End If
Forms("选择销售明细尺码").Close()

--  作者:有点甜
--  发布时间:2018/10/5 16:14:00
--  

DoubleClick 事件,在最开始的地方,加入代码

 

e.cancel = true


--  作者:yetle
--  发布时间:2018/10/6 11:38:00
--  
还是有这个提示:
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2018.9.9.1
错误所在事件:销售明细尺码,DoubleClick
详细错误信息:
未将对象引用设置到对象的实例。


--  作者:有点甜
--  发布时间:2018/10/6 11:43:00
--  

那就是 tbl1.Current 或者 tbl.Current 有问题,也就是对应的表,是空白的,没有数据。

 

如果自己无法排错,上传实例测试。


--  作者:yetle
--  发布时间:2018/10/6 11:50:00
--  

tbl.CurrentChanged没有代码


tbl.AfterLoad代码:

If Forms("生产制造单").Opened Then

Dim tbl As Table = Tables("生产制造单_Table1")

Dim pd As WinForm.ComboBox = Forms("生产制造单").Controls("ComboBox7")

If Tables("选择销售明细尺码_Table1").current IsNot Nothing

Tables("选择销售明细尺码_Table1").Filter = "[款号ID]= \'" & tbl.current("款号ID") & "\'and [已安排制单] = false "

End If

End If


tbl1.CurrentChanged代码:

If Forms("生产制造单").Opened()

    Dim t As Table = Tables("生产制造单_table2")

    Dim d As Table = Tables("生产制造单_table1")    

        If d.Current Is Nothing Then

            t.Filter = "False"

          Else If d.Current("生产单号") IsNot Nothing Then       

            t.Filter = "生产单号 = \'" & d.Current("生产单号") & "\'"                                      

        End If

End If


--  作者:有点甜
--  发布时间:2018/10/6 11:52:00
--  
上传具体实例测试。
--  作者:yetle
--  发布时间:2018/11/22 17:26:00
--  
把实例和数据导进来了,麻烦帮我看看,生产制造单--选择订单按钮
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.foxdb


--  作者:有点甜
--  发布时间:2018/11/22 19:08:00
--  

我测试了一下你给的例子,测试没问题。请说明下面这个例子的测试步骤。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11 (1).foxdb


--  作者:yetle
--  发布时间:2018/11/23 9:22:00
--  
是同时选了所有行的时候,或者选完之后,选到最后一行,点选择后会弹出提示,

另外每个尺码的数量没有给过来
[此贴子已经被作者于2018/11/23 9:32:57编辑过]

--  作者:有点甜
--  发布时间:2018/11/23 9:24:00
--  
以下是引用yetle在2018/11/23 9:22:00的发言:
是同时选了多行的时候,点选择后会弹出提示

 

测试也没有问题。