Foxtable(狐表)用户栏目专家坐堂 → 有效率高的加载数据命令吗?


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

主题:有效率高的加载数据命令吗?

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


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
有效率高的加载数据命令吗?  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/22 0:12:00 [显示全部帖子]

有数据,不方便上传

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


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/22 16:09:00 [显示全部帖子]

是本地ACCESS数据源,应该是表事件有计算代码,晚上回去试试,谢谢各位!

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


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/22 22:06:00 [显示全部帖子]

经测试,数据加载还是慢,加入
systemready = False
....

systemready = True

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

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

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

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


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/23 10:42:00 [显示全部帖子]

昨天测试时,在加载前已加入: SystemReady = False



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

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

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

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


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/23 23:36:00 [显示全部帖子]

经测试,把与订单明细表有关联的其他表达式列也屏蔽的话,全部数据加载约为27秒。
证明,有关联的其他表的列表达式也会影响加载效率

下面是关闭其他表的表达式语句

DataTables("产品信息表").DataCols("订单数量").Expression = ""
DataTables("订单主表").DataCols("总金额").Expression = ""
DataTables("出库明细表").DataCols("订单数量").Expression = ""
DataTables("出库明细表").DataCols("已送数量").Expression = ""

但是,与直接加载没有关联,没表达表的数据表所需时间0.2秒相比,还是大大超过。
[此贴子已经被作者于2017/3/23 23:37:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
明天的灵
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/24 22:02:00 [显示全部帖子]

测试1  引用外部表aaa:
1.把原订单明细表名改为:订单明细表1
2.增加外部表:订单明细表,不加任何关系式列。
3.还是用原加载订单明细表代码,加载时间为0.2秒。

测试2  屏蔽表事件
1、屏蔽事表件
2、屏蔽关系列表达式
3、还是用原加载订单明细表代码,加载时间为60秒

systemready = false
DataTables("订单明细表").StopRedraw
DataTables("订单明细表").DataCols("品名").Expression = ""   '屏蔽所有表达式列
DataTables("订单明细表").LoadFilter = ""
DataTables("订单明细表").Load
DataTables("订单明细表").ResumeRedraw
systemready = True
 

图片点击可在新窗口打开查看此主题相关图片如下:订单明细结构.jpg
图片点击可在新窗口打开查看
在实际加载代码中,已把上面的所有表达列屏蔽

[此贴子已经被作者于2017/3/24 22:03:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
明天的灵
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/24 22:17:00 [显示全部帖子]

好多数据啊,我看下能否删除些
[此贴子已经被作者于2017/3/24 22:18:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
明天的灵
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/25 15:11:00 [显示全部帖子]

附件为项目数据,已删除无关代码,只保留原项目的关联,表达式列。
用以下代码测试加载数据,时间还需25秒

Dim Filter,p,s,fl As String
Dim d,td As Date
Dim t1,t2,t3,t4 As Date
Dim tp1,tp2,tp3 As TimeSpan
t1 = Date.Now

Dim dt1 As Date = Date.Today.AddDays(-183)  '半年内录入的订单
'Dim Filter As String
'Filter = "录入日期 >= #" & dt1 & "#"

systemready = False
DataTables("订单明细表").StopRedraw
DataTables("订单明细表").DataCols("订单客户").Expression = ""
DataTables("订单明细表").DataCols("用料规格").Expression = ""
DataTables("订单明细表").DataCols("型号规格").Expression = ""
DataTables("订单明细表").DataCols("已交数量").Expression = ""
DataTables("订单明细表").DataCols("是否核销").Expression = ""
DataTables("订单明细表").DataCols("未交数量").Expression = ""
DataTables("订单明细表").DataCols("订单交期").Expression = ""
DataTables("订单明细表").DataCols("金额").Expression = ""
DataTables("订单明细表").DataCols("常用客户").Expression = ""
DataTables("订单明细表").DataCols("单位").Expression = ""
DataTables("订单明细表").DataCols("品名").Expression = ""

DataTables("产品信息表").DataCols("订单数量").Expression = ""
DataTables("订单主表").DataCols("总金额").Expression = ""
DataTables("出库明细表").DataCols("订单数量").Expression = ""
DataTables("出库明细表").DataCols("已送数量").Expression = ""

t2 = Date.Now
tp1 = t2 - t1

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


t3 = Date.Now
'DataTables("订单明细表").DataCols("订单客户").Expression = "Parent(订单明细).订单客户"
'DataTables("订单明细表").DataCols("用料规格").Expression = "Parent(产品信息).用料规格"
'DataTables("订单明细表").DataCols("型号规格").Expression = "Parent(产品信息).用料规格"
'DataTables("订单明细表").DataCols("已交数量").Expression = "IsNull(Sum(Child(订单_出库).实交数量),0)"
'DataTables("订单明细表").DataCols("是否核销").Expression = "Parent(订单明细).是否核销"
'DataTables("订单明细表").DataCols("未交数量").Expression = "[订单数量] - [已交数量]"
'DataTables("订单明细表").DataCols("订单交期").Expression = "Parent(订单明细).订单交期"
'DataTables("订单明细表").DataCols("金额").Expression = "[订单数量] * [单价]"
'DataTables("订单明细表").DataCols("常用客户").Expression = "Parent(订单明细).常用客户"
'DataTables("订单明细表").DataCols("单位").Expression = "Parent(产品信息).单位"
'DataTables("订单明细表").DataCols("品名").Expression = "Parent(产品信息).备注2"



DataTables("订单明细表").ResumeRedraw
systemready = True
t4 = Date.Now
tp2= t3-t2
MessageBox.Show("本次设置用时:" &  tp1.TotalSeconds() &  "秒. 数据加载用时:" & tp2.TotalSeconds() & "秒")
MessageBox.Show("共加载订单明细表记录数:" & Tables("订单明细表").Rows.Count)




[此贴子已经被作者于2017/4/13 11:19:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
明天的灵
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4368 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/3/25 16:27:00 [显示全部帖子]

是的,本身数据没问题。
但是,不是已把表达式屏蔽了吗?

 回到顶部
总数 12 1 2 下一页