各位:
我在向Access2000中添加记录时,发现速度越来越慢!需要添加的记录为3281,前面执行时速度还可以接受,可是当添加了大约1200条记录后,速度陡减,简直无法忍受!
代码如下:while not eof do
begin
with ADOQueryExe do
begin
close;
sql.Clear ;
sql.Add('select zkzh from zkz where bmxh=:bmxh and groupID=:groupID and Passed="0"');
bmxh:=ADOQuerySel.fieldbyname('bmxh').AsString ;
parameters.ParamByName('bmxh').Value :=bmxh ;
parameters.ParamByName('GroupID').Value :=ADOQuerySel.fieldbyname('groupID').Value ;
open;
if recordCount=0 then
begin
zkzh:=copy(bmxh,1,8)+GetSerial(ADOQueryexe);
//zkzh,xm,Xbdm,Mzdm,Csny,Dw,Xxlbdm,Bz,PassEd,bmxh,GroupID sql.Clear ;
sql.Add(sqlIns);
parameters.ParamByName('zkzh').Value :=zkzh;
end
else
begin
sql.Clear ;
sql.Add(sqlUpd);
end;
parameters.ParamByName('xm').Value :=ADOQuerySel.fieldbyname('xm').AsString ;
parameters.ParamByName('Xbdm').Value :=ADOQuerySel.fieldbyname('Xbdm').AsString ;
parameters.ParamByName('Mzdm').Value :=ADOQuerySel.fieldbyname('Mzdm').AsString ;
parameters.ParamByName('Csny').Value :=ADOQuerySel.fieldbyname('Csny').AsString ;
parameters.ParamByName('Xxlbdm').Value :=ADOQuerySel.fieldbyname('Xxlbdm').AsString ;
parameters.ParamByName('PassEd').Value :=ADOQuerySel.fieldbyname('PassEd').AsString ;
parameters.ParamByName('bmxh').Value :=ADOQuerySel.fieldbyname('bmxh').AsString ;
parameters.ParamByName('Dw').Value :=ADOQuerySel.fieldbyname('dw').AsString ;
parameters.ParamByName('Bz').Value :=ADOQuerySel.fieldbyname('bz').AsString ;
parameters.ParamByName('GroupID').Value :=ADOQuerySel.fieldbyname('GroupID').AsString ;
try
execsql;
frmpro.ProgressBar1.Position :=ChangeCount;
frmpro.leb_Name.Caption :=ADOQuerySel.fieldbyname('xm').AsString ;
frmpro.lab_ID.Caption :=ADOQuerySel.fieldbyname('bmxh').AsString+' '+ADOQuerySel.fieldbyname('GroupID').AsString+'组';;
frmpro.Repaint ;
except
begin
frmPro.Destroy ;
showmessage('数据库操作失败,无法生成考生准考证号!');
exit ;
end;
end;
end;
ChangeCount:=ChangeCount+1;
next;
end;采取的措施如下:
1.创建索引:Create index iZkzh on zkz(zkzh)
2.CacheSize=1000
3.设置ADOQuery.PrePare:=true各位有何高见?
P4 2.4G Ram=256M Disk=80G
我在向Access2000中添加记录时,发现速度越来越慢!需要添加的记录为3281,前面执行时速度还可以接受,可是当添加了大约1200条记录后,速度陡减,简直无法忍受!
代码如下:while not eof do
begin
with ADOQueryExe do
begin
close;
sql.Clear ;
sql.Add('select zkzh from zkz where bmxh=:bmxh and groupID=:groupID and Passed="0"');
bmxh:=ADOQuerySel.fieldbyname('bmxh').AsString ;
parameters.ParamByName('bmxh').Value :=bmxh ;
parameters.ParamByName('GroupID').Value :=ADOQuerySel.fieldbyname('groupID').Value ;
open;
if recordCount=0 then
begin
zkzh:=copy(bmxh,1,8)+GetSerial(ADOQueryexe);
//zkzh,xm,Xbdm,Mzdm,Csny,Dw,Xxlbdm,Bz,PassEd,bmxh,GroupID sql.Clear ;
sql.Add(sqlIns);
parameters.ParamByName('zkzh').Value :=zkzh;
end
else
begin
sql.Clear ;
sql.Add(sqlUpd);
end;
parameters.ParamByName('xm').Value :=ADOQuerySel.fieldbyname('xm').AsString ;
parameters.ParamByName('Xbdm').Value :=ADOQuerySel.fieldbyname('Xbdm').AsString ;
parameters.ParamByName('Mzdm').Value :=ADOQuerySel.fieldbyname('Mzdm').AsString ;
parameters.ParamByName('Csny').Value :=ADOQuerySel.fieldbyname('Csny').AsString ;
parameters.ParamByName('Xxlbdm').Value :=ADOQuerySel.fieldbyname('Xxlbdm').AsString ;
parameters.ParamByName('PassEd').Value :=ADOQuerySel.fieldbyname('PassEd').AsString ;
parameters.ParamByName('bmxh').Value :=ADOQuerySel.fieldbyname('bmxh').AsString ;
parameters.ParamByName('Dw').Value :=ADOQuerySel.fieldbyname('dw').AsString ;
parameters.ParamByName('Bz').Value :=ADOQuerySel.fieldbyname('bz').AsString ;
parameters.ParamByName('GroupID').Value :=ADOQuerySel.fieldbyname('GroupID').AsString ;
try
execsql;
frmpro.ProgressBar1.Position :=ChangeCount;
frmpro.leb_Name.Caption :=ADOQuerySel.fieldbyname('xm').AsString ;
frmpro.lab_ID.Caption :=ADOQuerySel.fieldbyname('bmxh').AsString+' '+ADOQuerySel.fieldbyname('GroupID').AsString+'组';;
frmpro.Repaint ;
except
begin
frmPro.Destroy ;
showmessage('数据库操作失败,无法生成考生准考证号!');
exit ;
end;
end;
end;
ChangeCount:=ChangeCount+1;
next;
end;采取的措施如下:
1.创建索引:Create index iZkzh on zkz(zkzh)
2.CacheSize=1000
3.设置ADOQuery.PrePare:=true各位有何高见?
P4 2.4G Ram=256M Disk=80G
解决方案 »
- hongqi162,在请教一个问题,如何实现当鼠标在rzgroupitem上的时候,弹出一个窗体?
- 调用DLL中窗体时的问题
- 需要几个组件一时找不到,希望谁能给我发个!
- 帮帮忙,把这段VB代码改成delphi,小女子先谢谢了,在线等待
- 改版后丢失的未解之迷:~~ 获取打印机的状态并控制打印机,问题解决必高分相送!!!
- delphi与access煤数据库连接问题
- 大家好。我现在做一个图书管理系统用delphi,但是做到借书还书的侯,我想先从视图选择是否有未归还的图书,且过期的图书让他的dbgrid的一行显示红色,这个怎么
- 如何响应鼠标滚轮消息?
- 如何使用已编译的dcu文件。请大家指教
- 如何锁定ALT键?
- 怎样在数据据库连接出错后,知道哪儿出错?50分
- 在delphi中怎样调用windows中的可执行程序?
在插入新记录时好像不需要使用索引吧,具体有用法吗,愿闻其详!
把SQL语句改为静态的放到ADOQuery的SQL中, 不要在运行的时候动态的Clear和Add, 这样可能会提高点儿速度, 你试试看, 如果在程序中必须修改SQL的话, 最好就再添加一个ADOQuery控件, 应该会提高速度的
==============================================================================
你这是全抄啊,嘿嘿,亏你还改写上来,分也不是这么混的晒,跟小虫的一字不差~_~:》