Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
[求助]  发帖心情 Post By:2015/11/19 9:06:00 [只看该作者]

请教专家,您好:我昨天编好的编码,经过测试,运行的也很好,但今天打开文件运行,弹出错误提示,提示如下:错误所在事件:表,拉动排产计划_浸漆,DataColChanged 详细错误信息:调用的目标发生了异常。未将对象引用设置到对象的实例。

      我查了DataColChanged事件编码,如下:

Select Case e.DataCol.Name
        Case "序号"
        Dim dr As DataRow = e.DataRow
        Dim pr1 As DataRow
        Dim pr2 As DataRow
        Dim pr3 As DataRow
        Dim pr4 As DataRow
        Dim pr5 As DataRow
        Dim pr6 As DataRow
        Dim pr7 As DataRow
        Dim pr8 As DataRow
        Dim pr9 As DataRow
        Dim pr10 As DataRow
        Dim pr11 As DataRow
        Dim pr12 As DataRow
        Dim filter As String
        filter = "序号 = '" & dr("序号") & "'"
        pr1 = DataTables("内部合同").Find(filter)
        pr2 = DataTables("内部合同").Find(filter)
        pr3 = DataTables("内部合同").Find(filter)
        pr4 = DataTables("内部合同").Find(filter)
        pr5 = DataTables("内部合同").Find(filter)
        pr6 = DataTables("内部合同").Find(filter)
        pr7 = DataTables("内部合同").Find(filter)
        pr8 = DataTables("内部合同").Find(filter)
        pr9 = DataTables("内部合同").Find(filter)
        pr10 = DataTables("内部合同").Find(filter)
        pr11 = DataTables("内部合同").Find(filter)
        pr12 = DataTables("内部合同").Find(filter)
        dr("合同编号") = pr1("合同编号")
        dr("品种_杆径") = pr2("品种_杆径")
        dr("品种_材质") = pr3("品种_材质")
        dr("品种_长度") = pr4("品种_长度")
        dr("品种_级别") = pr5("品种_级别")
        dr("品种_接箍") = pr6("品种_接箍")
        dr("品种_特殊要求") = pr7("品种_特殊要求")
        dr("品种_ID") = pr8("品种_ID")
        dr("贸易性质_内贸") = pr9("贸易性质_内贸")
        dr("贸易性质_外贸") = pr10("贸易性质_外贸")
        dr("交付数量_根")= pr11("数量_根")
        dr("合同交付日期")= pr12("交付日期")

End Select

调用异常的数据是蓝色编码部分,调用表和被调用表的该列设置完全相同,数据列,而且其他调用编码一致,都没有问题。主要问题表现为,不关闭文件,运行都正常,当文件关闭后重新打开时,该列数据调不出来,而且以前调用的数据也没有了。我不明白“未将对象引用设置到对象的实例”是什么意思。怎么解决?


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


加好友 发短信
等级:幼狐 帖子:194 积分:1168 威望:0 精华:0 注册:2015/6/8 21:38:00
  发帖心情 Post By: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


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


加好友 发短信
等级:幼狐 帖子:194 积分:1168 威望:0 精华:0 注册:2015/6/8 21:38:00
  发帖心情 Post By:2015/11/19 9:23:00 [只看该作者]

Dim pr As DataRow = DataTables("内部合同").Find("序号 = '" & dr("序号") & "'")
一定要判断pr是否为空。


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/19 9:26:00 [只看该作者]

汗,同一个表同一个条件,干嘛要查找12次。

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 9:31:00 [只看该作者]

谢谢,您的编码比我的简洁多了。但刚才描述的问题依然如故,没有解决。重点在:1、为什么不关闭文件,运行都正常,当文件关闭后重新打开时,以前调用的数据没有了。文件打开后,重新增加行,弹出错误提示,关闭该提示,新增行调用的数据都可以出现。2、“未将对象引用设置到对象的实例”是什么意思。这类问题可能的错误有哪些?解决方法有没有可以让我参考的?

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


加好友 发短信
等级:幼狐 帖子:194 积分:1168 威望:0 精华:0 注册:2015/6/8 21:38:00
  发帖心情 Post By: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("内部合同")

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By: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("内部合同")。这个问题我拿不准,我在《帮助文件》里看到“数据绑定与值的读写”一节,我的被调用的表中的数据是从窗口中写入的,没有直接在表中写入。我怀疑跟这个有关。但为什么其他数据也是从窗口中写入,就可以调用,只有这一个不能调用呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 10:37:00 [只看该作者]

2楼的代码没有任何问题。不可能报错。


 回到顶部
帅哥哟,离线,有人找我吗?
狐表开发
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1168 威望:0 精华:0 注册:2015/6/8 21:38:00
  发帖心情 Post By:2015/11/19 10:42:00 [只看该作者]

那不要用DataTables("内部合同"),引用你窗口表的DataTable

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/19 10:45:00 [只看该作者]

未必是2楼代码的问题,看看其它列赋值更改后会不会触发其它的事件

 回到顶部
总数 31 1 2 3 4 下一页