这是怎么啦???谁能告诉我!(100分)

  • 主题发起人 主题发起人 loxtln
  • 开始时间 开始时间
L

loxtln

Unregistered / Unconfirmed
GUEST, unregistred user!
这是怎么啦???谁能告诉我!
我写了一个数据库应用程序,用的是DBASE库,BDE配置用默认值,未作改动,库记录大约
有15000条记录(每天一条记录,大约43年资料),15个字段,我写这个程序是在一个内存
只有32M、CPU233的机器上进行的,查询也好,统计也好,速度都十分令人满意,该程序也
曾先后在其他一些机器上,运行正常。可是,最近,我们刚刚配了一台机器,PⅢ866,128M
内存,在这台机器上执行逐旬或逐月统计时,其速度慢得简直叫人难以忍受!这是怎么回事
啊!BDE配置我不熟悉,但没有改动过啊!这台机器好像也没有病毒之类啊!
 
毛病找到啦!原来是我在新机器上增加了dbgrid的datasource的dataset的onscroll事件,
用以实时显示当前记录号和总记录号!并重新编译。
现在的问题是:如何在统计的时候不响应该事件,统计结束后再响应呢?
 
统计前将datesource.dateset.onscroll:=nil就行了
结束后datesource.dateset.onscroll:=procedure XXXX
 
begin
........

xxxx.disablecontrol;
统计
......
xxxx.enablecontrol;
end;
 
var aevent:TDataSetNotifyEvent;
begin
aevent:=dataset.onscroll;
try
dataset.onscroll:=nil;
//统计;
finally
dataset.onscroll:=aevent;
end;
end;

另外,除非非常必要,一定不要大量使用recordcount,对与大数据量它非常影响效率;
使用代码移动记录前将dbgrid.datasource.enable:=false将大大提高效率;


 
给点分吧,毕竟我进来看过。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
850
SUNSTONE的Delphi笔记
S
S
回复
0
查看
782
SUNSTONE的Delphi笔记
S
后退
顶部