以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  代码执行时间太长  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=15860)

--  作者:netfox168
--  发布时间:2012/1/14 18:09:00
--  代码执行时间太长

某表更新代码如下:

 

DataTables("生产线").DataRows.Clear

Dim f8 As New Filler

f8.SourceTable = DataTables("临时表")

f8.SourceCols = "字段1,字段2, ... ,字段12"

f8.DataTable = DataTables("生产线")

f8.DataCols = "字段1,字段2, ... ,字段12"

f8.Fill()

 

共有1400多行数据,执行了60多秒,时间实在有点长了,不知有何优化方法?

在这段代码之前共有7个表向“临时表”填数,都是零点几秒,不知为何到这就这么长时间。

 

另外在“生产线”表做“重置列”三列,也用了40多秒钟,如果有上万条记录,时间就太长了。

 

[此贴子已经被作者于2012-1-14 18:09:07编辑过]

--  作者:don
--  发布时间:2012/1/14 18:27:00
--  
能否優化,關鍵你要清楚交待想實現的目的及上傳測試文件,單憑片言只字,誰知道呢?
--  作者:czy
--  发布时间:2012/1/14 18:52:00
--  

1400多行应该是零点几秒的事,这么耗时肯定不是Filler的问题。

执行Filler前先暂停这个表的事件,如确需计算,填充完后再进行计算。

 


--  作者:netfox168
--  发布时间:2012/1/14 23:54:00
--  
原因知道了,是在目标表(生产线)有“流水账”(DataColChenged)事件代码,数据填入时自动计算,删除后只用了零点几秒。问题是如何令“流水账”代码在 Fill 代码执行后再执行?因为 Fill 代码是在 MainTableChanged 事件中的,而“流水账”代码是在 DatColChanged 事件中的。如何安排?
--  作者:mr725
--  发布时间:2012/1/15 1:00:00
--  

参看:暂停执行事件代码