以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77478) |
-- 作者:陈卫 -- 发布时间:2015/11/19 9:06:00 -- [求助] 请教专家,您好:我昨天编好的编码,经过测试,运行的也很好,但今天打开文件运行,弹出错误提示,提示如下:错误所在事件:表,拉动排产计划_浸漆,DataColChanged 详细错误信息:调用的目标发生了异常。未将对象引用设置到对象的实例。 我查了DataColChanged事件编码,如下: Select Case e.DataCol.Name End Select 调用异常的数据是蓝色编码部分,调用表和被调用表的该列设置完全相同,数据列,而且其他调用编码一致,都没有问题。主要问题表现为,不关闭文件,运行都正常,当文件关闭后重新打开时,该列数据调不出来,而且以前调用的数据也没有了。我不明白“未将对象引用设置到对象的实例”是什么意思。怎么解决? |
-- 作者:狐表开发 -- 发布时间:2015/11/19 9:18:00 -- Select Case e.DataCol.Name Case "序号" Dim dr As DataRow = e.DataRow Dim pr As DataRow = DataTables("内部合同").Find("序号 = \'" & dr("序号") & "\'") If pr IsNot Nothing Then dr("合同编号") = pr("合同编号") dr("品种_杆径") = pr("品种_杆径") dr("品种_材质") = pr("品种_材质") dr("品种_长度") = pr("品种_长度") dr("品种_级别") = pr("品种_级别") dr("品种_接箍") = pr("品种_接箍") dr("品种_特殊要求") = pr("品种_特殊要求") dr("品种_ID") = pr("品种_ID") dr("贸易性质_内贸") = pr("贸易性质_内贸") dr("贸易性质_外贸") = pr("贸易性质_外贸") dr("交付数量_根")= pr("数量_根") dr("合同交付日期")= pr("交付日期") End If End Select |
-- 作者:狐表开发 -- 发布时间:2015/11/19 9:23:00 -- Dim pr As DataRow = DataTables("内部合同").Find("序号 = \'" & dr("序号") & "\'") 一定要判断pr是否为空。 |
-- 作者:Hyphen -- 发布时间:2015/11/19 9:26:00 -- 汗,同一个表同一个条件,干嘛要查找12次。 |
-- 作者:陈卫 -- 发布时间:2015/11/19 9:31:00 -- 谢谢,您的编码比我的简洁多了。但刚才描述的问题依然如故,没有解决。重点在:1、为什么不关闭文件,运行都正常,当文件关闭后重新打开时,以前调用的数据没有了。文件打开后,重新增加行,弹出错误提示,关闭该提示,新增行调用的数据都可以出现。2、“未将对象引用设置到对象的实例”是什么意思。这类问题可能的错误有哪些?解决方法有没有可以让我参考的? |
-- 作者:狐表开发 -- 发布时间:2015/11/19 9:56:00 -- 1、重新增加行,弹出什么错误提示? 2、“未将对象引用设置到对象的实例”,以2楼代码为例, 1)如果没有If pr IsNot Nothing Then,当pr为空时,后面你又引用了此pr,则会出错 2)dr("交付数量_根")= pr("数量_根")中,如果DataTables("内部合同")中,没有"数量_根"列或DataTables(拉动排产计划_浸漆)中没有"交付数量_根"列,也会出错 3)没有加载DataTables("内部合同"),找不到DataTables("内部合同")
|
-- 作者:陈卫 -- 发布时间:2015/11/19 10:21:00 -- 回答6楼:1、重新增加行,弹出的错误提示就是“未将对象引用设置到对象的实例” 2、“未将对象引用设置到对象的实例”,以2楼代码为例,
1)如果没有If pr IsNot Nothing Then,当pr为空时,后面你又引用了此pr,则会出错。我在编码时给新增行编了自动编入序号的编码,所以序号没有空值,故在该编码中没有设置判断空值的编码。不过为了严谨,还是应该设置一个,这一点赞同您的意见。
2)dr("交付数量_根")= pr("数量_根")中,如果DataTables("内部合同")中,没有"数量_根"列或DataTables(拉动排产计划_浸漆)中没有"交付数量_根"列,也会出错。这个问题也不存在,我在编码中该部位加入了msg,都能显示dr和pr的值。
3)没有加载DataTables("内部合同"),找不到DataTables("内部合同")。这个问题我拿不准,我在《帮助文件》里看到“数据绑定与值的读写”一节,我的被调用的表中的数据是从窗口中写入的,没有直接在表中写入。我怀疑跟这个有关。但为什么其他数据也是从窗口中写入,就可以调用,只有这一个不能调用呢?
|
-- 作者:大红袍 -- 发布时间:2015/11/19 10:37:00 -- 2楼的代码没有任何问题。不可能报错。 |
-- 作者:狐表开发 -- 发布时间:2015/11/19 10:42:00 -- 那不要用DataTables("内部合同"),引用你窗口表的DataTable |
-- 作者:Hyphen -- 发布时间:2015/11/19 10:45:00 -- 未必是2楼代码的问题,看看其它列赋值更改后会不会触发其它的事件 |