你提到两个问题:
1、两个表,父表5000多条记录,子表将近40000,每个表十几列,导入数据半个小时了,硬是没有反应。没办法,删除关联重新导入,大概花了十分钟。
2、然后重新建立关联,打开窗口,窗口中有一个datalist控件,然后又是十几分钟的等待,没有反应,删除关联,重新应用窗口,三秒左右打开。
第二个问题,我已经解决,不管有没有关联,都可以3秒打开。
但是第一个问题,我不明白,导入数据是新建一个表,性能应该和以前的表及关联无关,如果是合并,我测试是非常高效的,并不存在你说的问题啊,请老兄明示一下。
[此贴子已经被作者于2009-6-16 8:14:23编辑过]
估计是我没有说明白,不是导入数据,是把导入数据弄到需要用的表里面。
另外被导入表使用datacolchange后也会速度变慢,和关联差不多都是半小时没反应。
明白了,如果不是经常大批量导入数据,那么就忍受了吧。
如果经常这样做,按下面的思路设计:
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编辑过]
还有一个方案,你可以继续使用关联和表达式列,反正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 = "原计算公式"
谢了,学习学习!
你给的替代关联例子,数据多了感觉速度不是很理想
外部数据源情况下,filter换成loadfilter速度成倍提高,不知道内部数据情况下会不会有所提高。
以下是引用听雪落的声音在2009-6-16 9:07:00的发言:
外部数据源情况下,filter换成loadfilter速度成倍提高,不知道内部数据情况下会不会有所提高。
你该不会用Filter配合Load使用吧?
这样完全失去了动态加载的意义。
老兄真的应该先看帮助了。
以下是引用狐狸爸爸在2009-6-16 9:33:00的发言:
你该不会用Filter配合Load使用吧?
这样完全失去了动态加载的意义。
老兄真的应该先看帮助了。
如果这样,有什么意思!