Foxtable(狐表)用户栏目专家坐堂 → 表达式不产生值


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

主题:表达式不产生值

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/21 14:27:00 [只看该作者]

我们再仔细理解一下【DataColChanged事件触发的前提条件是单元格的数据被改变了】,也就是说只要单元格的数据改变就会触发DataColChanged事件,那么如果在DataColChanged事件里改变单元格的值,那么同样会立即又触发DataColChanged事件,而之前的DataColChanged事件代码可能还没有执行完毕。用图像说明一下

第19行【材料费小计】数据改变,又会马上触发datacolchanged事件,而这时20行开始后面代码会等待,并没有执行,而第2次触发的列是【材料费小计】,所以会执行a,a的代码又触发了父表的datacolchanged,即图上的b。这时由于20行后面代码并没有执行,所以"工步时间小计"还没有计算,b执行的时候估工的值也就还没有变。然后b执行完毕,返回a,a执行完毕,20行后面的代码才继续接着执行。同样的原理,到了③,也会触发父表表的计算,这时"工步时间小计"仍然还没有计算,估工的值也就还没有变。接着执行到⑤,这时"工步时间小计"才会计算出来,但是"工步时间小计"改变并不会触发a,所以父表估工的值也就还是上次的值。


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

所以最终要像30楼那要把"工步时间小计"加到case里。或者把代码顺序调换一下,"工步时间小计"的计算(46~49行),放到材料费小计计算的前面

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2023/10/21 14:41:00 [只看该作者]

谢谢蓝版耐心解答,总算理解了。

 回到顶部
总数 62 上一页 1 2 3 4 5 6 7