以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  “听雪落的声音”兄请进....  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3157)

--  作者:狐狸爸爸
--  发布时间:2009/6/15 20:12:00
--  “听雪落的声音”兄请进....
你提到两个问题:

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

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

--  作者:易狐
--  发布时间:2009/6/16 0:47:00
--  

有收获,您俩继续讨论,我旁观!


--  作者:听雪落的声音
--  发布时间:2009/6/16 8:43:00
--  
估计是我没有说明白,不是导入数据,是把导入数据弄到需要用的表里面。 另外被导入表使用datacolchange后也会速度变慢,和关联差不多都是半小时没反应。
--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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 = "原计算公式"

--  作者:听雪落的声音
--  发布时间:2009/6/16 9:07:00
--  

谢了,学习学习!
你给的替代关联例子,数据多了感觉速度不是很理想
外部数据源情况下,filter换成loadfilter速度成倍提高,不知道内部数据情况下会不会有所提高。


--  作者:yangming
--  发布时间:2009/6/16 9:21:00
--  
学习,收藏了!
--  作者:狐狸爸爸
--  发布时间:2009/6/16 9:33:00
--  
以下是引用听雪落的声音在2009-6-16 9:07:00的发言:

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


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


--  作者:blackzhu
--  发布时间:2009/6/16 10:13:00
--  
以下是引用狐狸爸爸在2009-6-16 9:33:00的发言:


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

如果这样,有什么意思!