以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有效率高的加载数据命令吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97974)

--  作者:明天的灵
--  发布时间:2017/3/21 23:51:00
--  有效率高的加载数据命令吗?
一个订单主表与订单明细表,其中订单明细表总共有5000多条数据

现已参考
http://www.foxtable.com/webhelp/scr/1935.htm
的做法
临时屏蔽表达式
并且停止刷新表

DataTables("订单明细表").StopRedraw
DataTables("订单明细表").DataCols("品名").Expression = ""   ‘现在加载条件为空,实际使用时,还要加入条件

DataTables("订单明细表").LoadFilter = “”
DataTables("订单明细表").Load


DataTables("订单明细表").ResumeRedraw

实测耗时近1分钟。

请问还要从哪方面去排查原因吗?
[此贴子已经被作者于2017/3/21 23:51:47编辑过]

--  作者:wyz20130512
--  发布时间:2017/3/22
--  
传实例看看。
--  作者:明天的灵
--  发布时间:2017/3/22 0:12:00
--  
有数据,不方便上传
--  作者:狐狸爸爸
--  发布时间:2017/3/22 7:30:00
--  
应该还有其它原因,最好有实例测试。
另: 网路环境,要控制数据加载量。

--  作者:有点蓝
--  发布时间:2017/3/22 8:43:00
--  

表事件是不是有计算代码,使用SystemReady呢?http://www.foxtable.com/webhelp/scr/2218.htm

 


--  作者:有点色
--  发布时间:2017/3/22 9:39:00
--  

你明细表,只有一个公式?下面的代码,如果还慢,说明你数据量大或者网络差。

 

systemready = false
DataTables("订单明细表").StopRedraw
DataTables("订单明细表").DataCols("品名").Expression = ""   \'现在加载条件为空,实际使用时,还要加入条件
DataTables("订单明细表").LoadFilter = ""
DataTables("订单明细表").Load
DataTables("订单明细表").ResumeRedraw
systemready = True

 

 


--  作者:明天的灵
--  发布时间:2017/3/22 16:09:00
--  
是本地ACCESS数据源,应该是表事件有计算代码,晚上回去试试,谢谢各位!
--  作者:明天的灵
--  发布时间:2017/3/22 22:06:00
--  
经测试,数据加载还是慢,加入
systemready = False
....

systemready = True

测试的时间与以前一样,还是59秒。

我重新建立一个项目,并把外部数据连接到同一个本地的ACCESS数据文件,进行LOAD加载测试,
发现只需要0.2秒。

请问还有什么可以屏蔽吗?

--  作者:有点色
--  发布时间:2017/3/23 0:18:00
--  
以下是引用明天的灵在2017/3/22 22:06:00的发言:

我重新建立一个项目,并把外部数据连接到同一个本地的ACCESS数据文件,进行LOAD加载测试,
发现只需要0.2秒。

请问还有什么可以屏蔽吗?

 

1、你看看你的这个表,有多少个表达式列,把表达式列的公式去掉;

 

2、看看你这个表的 afterLoad、CurrentChanged 等事件,把代码屏蔽一下看看。


--  作者:明天的灵
--  发布时间:2017/3/23 10:42:00
--  
昨天测试时,在加载前已加入: SystemReady = False



按理应该与表事件无关了,

而且清空了这个表的所有表达式。

因“订单明细表”除了与订单主表有关联外,还有与出库明细表有关联,是不是也要要屏蔽有关联表的表达式?
[此贴子已经被作者于2017/3/23 15:42:58编辑过]