Foxtable(狐表)用户栏目专家坐堂 → “听雪落的声音”兄请进....


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

主题:“听雪落的声音”兄请进....

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
“听雪落的声音”兄请进....  发帖心情 Post By:2009/6/15 20:12:00 [显示全部帖子]

你提到两个问题:

1、两个表,父表5000多条记录,子表将近40000,每个表十几列,导入数据半个小时了,硬是没有反应。没办法,删除关联重新导入,大概花了十分钟。
2、然后重新建立关联,打开窗口,窗口中有一个datalist控件,然后又是十几分钟的等待,没有反应,删除关联,重新应用窗口,三秒左右打开。

第二个问题,我已经解决,不管有没有关联,都可以3秒打开。
但是第一个问题,我不明白,导入数据是新建一个表,性能应该和以前的表及关联无关,如果是合并,我测试是非常高效的,并不存在你说的问题啊,请老兄明示一下。
[此贴子已经被作者于2009-6-16 8:14:23编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/16 8:48:00 [显示全部帖子]

明白了,如果不是经常大批量导入数据,那么就忍受了吧。
如果经常这样做,按下面的思路设计:

1、新增一个逻辑型全局变量,假定变量名为"A",在项目的Initialize事件加入代码:

Vars.Add("A",GetType(Boolean),False


2、在导入数据的代码改为:

Vars("A") = True
原来的导入代码
Vars("B") = False

3、DatacolChanged的事件代码设为:
If Vars("A") = True Then
   Return
end If
原来的代码

经过上述设计,导入数据的时候,就不会执行DatacolChanged事件的代码。

另外要检查检查自己的代码设计是否合理,同样的任务,不同的设计,性能相差10到1000倍都可能。

[此贴子已经被作者于2009-6-16 8:51:46编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/16 9:01:00 [显示全部帖子]

还有一个方案,你可以继续使用关联和表达式列,反正DataList的问题已经解决。
导入前清除所有表达式列的表达式,导入后恢复:

DataTables("某表A").DataCols("某列1").Expression = ""
DataTables("某表A").DataCols("某列2").Expression = ""
DataTables("某表B").DataCols("某列C").Expression = ""
原来的导入代码
DataTables("某表A").DataCols("某列1").Expression = "原计算公式"
DataTables("某表A").DataCols("某列2").Expression = "原计算公式"
DataTables("某表B").DataCols("某列C").Expression = "原计算公式"

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/16 9:33:00 [显示全部帖子]

以下是引用听雪落的声音在2009-6-16 9:07:00的发言:

外部数据源情况下,filter换成loadfilter速度成倍提高,不知道内部数据情况下会不会有所提高。


你该不会用Filter配合Load使用吧?
这样完全失去了动态加载的意义。
老兄真的应该先看帮助了。


 回到顶部