以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Object reference not set to an instance of an object  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187960)

--  作者:creastzh
--  发布时间:2023/8/23 13:16:00
--  Object reference not set to an instance of an object
我自认为我已经明白了找不到应用实例而报错的问题, 但今日却再次打脸,请帮我再确认一下具体原因,谢谢!
下面的截图是在筛选状态下使用“Ctrl+A”新增的数据行, 但立即就报错了, 将光标换行,下方显示正常,但光标再次点击这个空行,则再次报错。
图片点击可在新窗口打开查看


报错信息如下:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:Schedule,CurrentChanged
详细错误信息:
Object reference not set to an instance of an object.

该表的CurrenChanged事件代码:
\'变更schedule,将工序信息写入下方表中
MessageBox.Show(1) ‘调试提示1’
If Not DataTables.Contains("WorkOrderStatus") Then
    DataTables.Load("WorkOrderStatus")
End If 
Dim wo As String
Dim r As Row = Tables("Schedule").Current


MessageBox.Show("2") ‘调试提示2’
    
If r IsNot Nothing Then 
    wo = r("WO")
    Tables("CellKanban_Table2").Filter = "[wo]=\'" & wo & "\'"
Else
    Return
End If

If Not DataTables.Contains("Production_List") Then
    DataTables.Load("Production_List")
End If
If wo Is Nothing Then GoTo 1
Tables("CellKanban_Table3").Filter = "WOID = \'" & wo & "\'"
Tables("CellKanban_Table3").sort = "OPSeq,CLOCKIN"

Dim PN As String = e.Table.Current("PartID")
Dim Pbx As WinForm.PictureBox = e.Form.Controls("PictureBox1")
Dim fpf As String
Dim fp As String = "P:\\General documents\\Setup\\Pic\\" \'\\\\freenas01chi\\Production\\General documents\\Setup\\Pic\\
fpf = fp & PN & ".jpg" 
If FileSys.FileExists(fpf) = False Then
    fp = "T:\\ME\\ME Documentation\\Picture\\" \'\\\\domain.pragon\\china\\ME\\ME Documentation\\Picture\\" & PN & ".jpg"
    fpf = fp & PN & ".jpg"
    If FileSys.FileExists(fpf) = False Then 
        fpf = "P:\\General documents\\Setup\\Pic\\Error.jpg" 
    End If 
End If
pbx.ImageFile = fpf
pbx.SizeMode = ImageSizeMode.Zoom
1:


奇怪的是,如果存在工单号则提示、运行均正常,一旦点击空行,则连 调试提示1、2均不出现。更别说运行下面的数据了。 此外还有一个情况,点击存在数据行后,调试提示均出现2次。

--  作者:有点蓝
--  发布时间:2023/8/23 13:34:00
--  
Schedule是不是在窗口有副本表,副本是不是也有CurrentChanged事件代码
--  作者:creastzh
--  发布时间:2023/8/23 16:17:00
--  
我有副本表,但这个副本表的Currentchanged没有设置代码。
图片点击可在新窗口打开查看
[此贴子已经被作者于2023/8/23 16:17:09编辑过]

--  作者:有点蓝
--  发布时间:2023/8/23 16:19:00
--  
表面看不出什么问题,请上传实例测试
--  作者:creastzh
--  发布时间:2023/8/23 17:10:00
--  
我不知道为什么,当我将无关表单和大量数据删除,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:learn.zip

打包后又出现新的实例找不到了,原来出现的Currentchanged 的问题又不存在了

进入后,点击工单运行, 看板管理
图片点击可在新窗口打开查看
[此贴子已经被作者于2023/8/23 17:17:33编辑过]

--  作者:creastzh
--  发布时间:2023/8/23 17:16:00
--  

[此贴子已经被作者于2023/8/23 17:16:03编辑过]

--  作者:有点蓝
--  发布时间:2023/8/23 17:40:00
--  
1、尽量不要使用GoTo这种地狱用法,如果符合条件才执行,建议这样

If wo Isnot Nothing Then
Tables("CellKanban_Table3").Filter = "WOID = \'" & wo & "\'"
……
end if

2、在主表事件里不要使用e.form这种用法,应该指定窗口名称,并且要判断窗口是否已经打开

\'变更schedule,将工序信息写入下方表中
\'MessageBox.Show(1)
If Not DataTables.Contains("WorkOrderStatus") Then
    DataTables.Load("WorkOrderStatus")
End If 
Dim wo As String
Dim r As Row = e.Table.Current
If r Is Nothing Then Return

\'MessageBox.Show("2")

wo = r("WO")
Tables("CellKanban_Table2").Filter = "[wo]=\'" & wo & "\'"

If Not DataTables.Contains("Production_List") Then
    DataTables.Load("Production_List")
End If
If wo IsNot Nothing AndAlso Forms("CellKanban").Opened Then
    Tables("CellKanban_Table3").Filter = "WOID = \'" & wo & "\'"
    Tables("CellKanban_Table3").sort = "OPSeq,CLOCKIN"
    
    Dim PN As String = r("PartID")
    Dim Pbx As WinForm.PictureBox = Forms("CellKanban").Controls("PictureBox1")
    Dim fpf As String
    Dim fp As String = "P:\\General documents\\Setup\\Pic\\" \'\\\\freenas01chi\\Production\\General documents\\Setup\\Pic\\
    fpf = fp & PN & ".jpg" 
    If FileSys.FileExists(fpf) = False Then
        fp = "T:\\ME\\ME Documentation\\Picture\\" \'\\\\domain.pragon\\china\\ME\\ME Documentation\\Picture\\" & PN & ".jpg"
        fpf = fp & PN & ".jpg"
        If FileSys.FileExists(fpf) = False Then 
            fpf = "P:\\General documents\\Setup\\Pic\\Error.jpg" 
        End If 
    End If
    pbx.ImageFile = fpf
    pbx.SizeMode = ImageSizeMode.Zoom
End if

--  作者:creastzh
--  发布时间:2023/8/23 21:08:00
--  
好的,我再试一下,十分感谢有点蓝老师,成长路上一路有您的不懈支持,我会更有信心的。