Foxtable(狐表)用户栏目专家坐堂 → 请教一段事件代码的优化


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

主题:请教一段事件代码的优化

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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
请教一段事件代码的优化  发帖心情 Post By:2015/10/16 13:32:00 [只看该作者]

 

根据帮助指南中独占式编辑的内容,在表的BeforSaveDatarow 中写入以下代码,(代码不能发,只能以图片形式上传)

目的是在保存行之前,如果此行是当前用户编辑的,清除此行的编辑者列内容。<!--?xml:namespace prefix = "o" /-->


 

上述代码执行效率很低。

一个表有3000行数据,全部执行锁定或解锁操作后,保存表时,如果没有上述代码只需2秒;而有上述代码时,用时近2分钟。

请问如何优化?

 


此主题相关图片如下:代码.jpg
按此在新窗口浏览图片


中间的 cmd.C   后面的内容发上不来。
实际就是数据源
    C o n n e c t i o n N a m e  =  "XXxx"



[此贴子已经被作者于2015/10/16 14:08:17编辑过]

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


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

不用写cmd的代码,直接写如即可

 

e.DataRow("编辑者") = Nothing


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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2015/10/16 14:16:00 [只看该作者]

指南中的解释:

你也许会奇怪,为什么新增行可以直接清空
者列的内容,但其它行要通过Update语句设置?
假定现有一行数据,用户张三双击此行某个单元格开始,系统执行StartEdit事件,将者列的内容设置为“张三”,后台此列的内容也通过Update语句设置为了“张三”,如果此用户在过程中,没有做任何修改,就选择了其他单元格,然后保存,此时如果在BeforeSaveDataRow事件中直接清空者列内容,那么此行所有列的内容和最初完全一样,Foxtable将不会保存此行,所以虽然你清空了者列的内容,但是后台的者列还是“张三”,导致记录被锁死。
这里涉及到Foxtable的保存机制:在保存某行之前,系统会进行一个判断,如果此行所有列内容和最初完全相同,则跳过此行,以提高保存效率。

如何解决指南中提到的问题?
[此贴子已经被作者于2015/10/16 14:24:30编辑过]

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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2015/10/16 14:31:00 [只看该作者]

自己顶啦

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


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

没必要理会,关闭系统的时候,自动会清除的。如果你要清除,就肯定慢。

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/10/16 14:42:00 [只看该作者]

停止这个操作,简单方法增加一个全局变量开关。
if AllowDo = true then 

end if

第二 直接对数据库操作 用IN 语句增加条件


 回到顶部