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


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

主题:[求助]

帅哥哟,离线,有人找我吗?
陈卫
  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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
陈卫
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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("内部合同")。这个问题我拿不准,我在《帮助文件》里看到“数据绑定与值的读写”一节,我的被调用的表中的数据是从窗口中写入的,没有直接在表中写入。我怀疑跟这个有关。但为什么其他数据也是从窗口中写入,就可以调用,只有这一个不能调用呢?

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 10:47:00 [显示全部帖子]

继续请教:在数据绑定与值的读写”一节中讲到:

如果一个控件已经绑定到了某列,就不应该直接设置该控件的值,而是直接设置其绑定列的值。
假定有一个日期输入框(DateTimePicker),绑定到了订单表的日期列,我们将某个按钮的代码设置为:

Dim dtp As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
dtp.Value =
Date
.Today
MessageBox.Show(
"输入框的值:"
& dtp.Value)
MessageBox.Show(
"日期列的值:" & Tables("订单").Current("日期"))

单击这个按钮,你会发现日期输入框的值,确实等于今天的日期,但是订单表日期列的值,并不是今天,而是原来的值。
也就是说,在绑定状态下,设置控件的值,并不会同步更新其绑定列的值。

在绑定状态下,我们应该直接设置列的值,而不是控件的值。

下面是我的问题:1)如果我们改写代码,是否应该在该输入框的Click事件中编写代码?

2)如果是,以上面的内容为例,如何将日期从窗口直接写入到绑定的表的列中?不写入今天,而是任意写入的日期。


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 10:58:00 [显示全部帖子]

回答9楼10楼两个问题:

DataTables("内部合同")是已经找到的,而且也给其他的列的数据调用提供了数据。同时在文件正常运行时,虽然报错,但能够调用数据。只有关闭文件,再次打开时,“问题列”的数据没有了,“其他列”正常。


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 11:08:00 [显示全部帖子]

谢谢12楼提供的编码。我写入到窗口的输入框中进行测试,原来的问题依然出现,看来不是“数据绑定与值的读写”一节中讲的问题

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 11:29:00 [显示全部帖子]

回答13楼:

1、问题列是制表的时候直接写入的,没有用代码生成。被调用表的问题列中的数据是从窗口的输入框(绑定到调用表的相应列)输入的,其他列也是从窗口输入的,只有问题列出了问题。

2、我是新手,直接从被调用表的问题列通过调用表的表事件编码调入到调用表的问题列当中,其他列的调用方式一样,都没有出问题,只有这一列出了问题。我还没有学习到如何将数据先存入数据库,然后调用,所以不知道数据库的问题


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 11:38:00 [显示全部帖子]

谢谢大红袍,请您看看我前面的内容,重点是1楼5楼7楼17楼

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 14:22:00 [显示全部帖子]

我有一个“内部合同”表,其中数据从窗口输入,所有列均为数据列,“序号”列内容通过表属性的Datarowadding事件写代码:e.DataRow("序号") = e.DataTable.Compute("Max(序号)") + 1,自动填写序号,“合同编号”“数量_根”列内容通过窗口的texebox(都绑定到“内部合同”表的相应列)直接输入,“品种”内的所有列通过窗口的控件框属性的“数据表”生成的下拉列表选定输入。“内部合同”表如图:


图片点击可在新窗口打开查看此主题相关图片如下:11111.bmp
图片点击可在新窗口打开查看

窗口如图:

 
图片点击可在新窗口打开查看此主题相关图片如下:11114.bmp
图片点击可在新窗口打开查看

在另一个表(拉动排产计划_浸漆)中,与“内部合同”表中内容一致的列,通过表属性的Datacolchanged事件写代码,从“内部合同”中调入。如图:


图片点击可在新窗口打开查看此主题相关图片如下:11112.bmp
图片点击可在新窗口打开查看

编码在1楼,后按照2楼的进行了修改。问题如上所述
 


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/19 14:29:00 [显示全部帖子]

出现问题的列是“内部合同”的“数量_根”和“合同交付日期”的数据调入到“拉动排产计划_浸漆”的“交付数量_根”和“交付日期”中,在正常运行时,提示错误信息,关掉该信息,所有数据调用都正常实现。但把项目关掉重新打开,“拉动排产计划_浸漆”的“交付数量_根”中调入的数据和“交付日期”中调入的数据全部消失,此时删除行重新增加行,提示错误信息,关掉该信息,所有数据调用又都正常实现。
[此贴子已经被作者于2015/11/19 14:38:17编辑过]

 回到顶部
总数 16 1 2 下一页