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


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

主题:[求助]DATACOLCHANGED

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/4 12:06:00 [显示全部帖子]

以下是引用狐哥在2009-5-4 11:31:00的发言:
有没有加截表完成之前不触发DATACOLCHANGED的函数

比如:
表A为提取表B后台数具
表A的DATACOLCHANGED有好多公式,但我想在表A加载数具完成之前不触发列公式,有此函数吗.

   我也有同样的需求!
   现在的狐表中有手工强制执行DatacolChanged事件的方法(RaiseDataColChanged),好像没有暂停执行DatacolChanged事件的方法!
   在绝大多数时候,列的数值的改变需要自动激发DatacolChanged事件,以实现相应的计算或操作.但在某些特殊时候,需要暂停执行某列的DatacolChanged事件,等到达到一定条件后再执行DatacolChanged事件.所以强烈建议提供一个这样的方法!

[此贴子已经被作者于2009-5-4 12:08:20编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/4 12:43:00 [显示全部帖子]

以下是引用mr725在2009-5-4 12:34:00的发言:
增加一列作为条件来判断是否执行datacolchanged事件不知是否可行?比如该判断列为空时不执行,需要执行时,给该判断列赋值来触发需要执行datacolchanged事件的列,不知可否?只是动作多一点。

    目前的狐表中肯定不行.目前的系统中没有暂停执行该事件的方法,更不允许用代码动态增加或减少列事件,所以,你的想法很好,但在目前的狐表中没有办法执行.
    既然有这个需求,所以,还是希望贺老师增加一个暂停执行列事件的方法!


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/4 15:06:00 [显示全部帖子]

    增加这样一个方法,可以减少不必要的计算,提高系统的效率.若没有这个方法,会造成重复执行许多不必要的计算,造成系统效率下降.
   举个简单的例子吧,假如一个工资表中有52列(全部是数据列,不用表达式列),分别为姓名,工资1,工资2,工资3,……工资50,工资合计。假设运算公式为:工资合计=工资1+工资2+工资3+,……+工资50。在目前的狐表中,需要对这50个列设置同样的DatacolChanged事件(计算工资合计)。
  假如在新增一行工资数据的时候,我们不直接编辑表,窗口中的输入框也不直接绑定表,而是通过窗口的输入框及全局变量一次性写入一人的全部工资项目(注意是先在窗口中填写50个工资项目的值,然后再一次性写入表),在目前的狐表中,每写入一个字段,就执行一次DatacolChanged事件,换句话说,每导入一个人的工资数据,就重复执行50次的一模一样的DatacolChanged事件。
    其实大家都能看出来,在这种情况下,重复执行50次相同的事件完全没有必要。而且一个人的工资数据是在窗口中输入而且一次性导入表中,中间的计算结果也没有任何意义。效率比较高的做法是在从全局变量写入表中的时候先暂停执行DatacolChanged事件,等50个字段写入完成后,只要执行一次某一列的Datacolchanged事件即可。
    在实际应用中,计算公式比这复杂得多,可能有加减乘除、括号、甚至还有函数,对系统的运行效率的影响也非常明显。为了提高系统的运行效率,所以,再次强烈建议贺老师增加暂停执行DatacolChanged事件的方法!
[此贴子已经被作者于2009-5-4 15:08:55编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/4 15:15:00 [显示全部帖子]

以下是引用mr725在2009-5-4 15:14:00的发言:

即使有这个暂停执行的方法,那么什么时候来打开执行呢?????

这个问题简单,有暂停,就必须有启用,这两个是配对的,否则根本无法使用。


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/4 15:25:00 [显示全部帖子]

以下是引用mr725在2009-5-4 15:21:00的发言:

这么说,只是对设计者使用的?

     无所谓啊。我认为既可以用代码,也可以在菜单上加两个按钮,应该都可以啊。即使把狐表当作数据表来用,这个功能同样非常有用!如果设置了这两个按钮,先禁用列事件,等编辑完成后再启用,这样也可以减少很多的重复计算(在某种情况下会减少几十倍的计算次数),大大提高效率!
   但增加与否,看贺老师的意思了!但个人认为没有多大技术难度,又非常实用,我相信贺老师一定会支持的!


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/4 15:28:00 [显示全部帖子]

以下是引用don在2009-5-4 15:23:00的发言:
1.DataColChanged:

if vars("开关") = "开" then
   原来的DataColChanged代码
End if

2.开启:
 vars("开关") = "开"

3.关闭:
 vars("开关") = "关"

    呵呵,如果这样简单,那就不用麻烦贺老师了。看起来don是真正的高人,先试用一下再说!
   这个实现虽然简单,但非常有用,对提高系统运行效率意义重大,请贺老师看一下,如果这种方法没有什么问题,建议对这个贴子加精!并把这种方法收到帮助中!

[此贴子已经被作者于2009-5-4 15:33:22编辑过]

 回到顶部