Foxtable(狐表)用户栏目专家坐堂 → Object reference not set to an instance of an object


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

主题:Object reference not set to an instance of an object

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


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
Object reference not set to an instance of an object  发帖心情 Post By:2023/8/23 13:16:00 [只看该作者]

我自认为我已经明白了找不到应用实例而报错的问题, 但今日却再次打脸,请帮我再确认一下具体原因,谢谢!
下面的截图是在筛选状态下使用“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次。

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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/23 13:34:00 [只看该作者]

Schedule是不是在窗口有副本表,副本是不是也有CurrentChanged事件代码

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


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2023/8/23 16:17:00 [只看该作者]

我有副本表,但这个副本表的Currentchanged没有设置代码。
图片点击可在新窗口打开查看
[此贴子已经被作者于2023/8/23 16:17:09编辑过]

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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/23 16:19:00 [只看该作者]

表面看不出什么问题,请上传实例测试

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


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2023/8/23 17:10:00 [只看该作者]

我不知道为什么,当我将无关表单和大量数据删除,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:learn.zip

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

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

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


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2023/8/23 17:16:00 [只看该作者]


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

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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2023/8/23 21:08:00 [只看该作者]

好的,我再试一下,十分感谢有点蓝老师,成长路上一路有您的不懈支持,我会更有信心的。

 回到顶部