以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教一段事件代码的优化  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75874)

--  作者:lake163
--  发布时间: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编辑过]

--  作者:大红袍
--  发布时间:2015/10/16 14:10:00
--  

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

 

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


--  作者:lake163
--  发布时间:2015/10/16 14:16:00
--  
指南中的解释:

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

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

--  作者:lake163
--  发布时间:2015/10/16 14:31:00
--  
自己顶啦
--  作者:大红袍
--  发布时间:2015/10/16 14:37:00
--  
没必要理会,关闭系统的时候,自动会清除的。如果你要清除,就肯定慢。
--  作者:jspta
--  发布时间:2015/10/16 14:42:00
--  
停止这个操作,简单方法增加一个全局变量开关。
if AllowDo = true then 

end if

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