进度条的制作
请教高手我需要做下面这样一个进度条,该怎么做
我现在做的一个小程序,在一个fsNormal窗体中有一个按钮查询数据表中的数据,并显示在dbgrid中,由于数据量比较大,所以运行时候要等半天,还可能出现白屏.现在我想做一个进度条显示当前的查询进度,想用ProgressBar实现
datamodule中放置了 adoconnection 连数据库 ado9连adoconnection datasource连ado9
按钮代码如下
procedure TForm6.BitBtn2Click(Sender: TObject);
var
i,row,k:integer;
k1,k2,k3,k4:double;
begin
k3:=0.00;
k4:=0.00;
dm.ADO9.Close;
dm.ADO9.SQL.Clear;
dm.ADO9.SQL.Add( 'select a.cCode,a.cBusType,a.cVenCode,a.dDate,b.cInvCode,sum(b.iQuantity) as iQuantity,sum(b.iPrice) as iPrice ');
dm.ado9.sql.add( 'from RdRecord a,RdRecords b ');
dm.ado9.sql.add( ' where (a.ID=b.ID)and(a.dDate between ' ' '+datetostr(datetimepicker1.Date)+ ' ' ' and ' ' '+datetostr(datetimepicker2.Date)+ ' ' ')and(a.cVouchType= ' '01 ' ') group by a.cCode,a.cBusType,a.cVenCode,a.dDate,b.cInvCode ');
dm.ADO9.Open;
while not dm.ADO9.Eof do
begin
k1:=dm.ADO9.fieldbyname( 'iQuantity ').AsFloat;
k2:=dm.ADO9.fieldbyname( 'iPrice ').AsFloat;
k3:=k3+k2;
k4:=k4+k1;
dm.ADO9.Next;
end;
edit1.Text:=floattostr(k3);
edit3.Text:=floattostr(k4);
dbgrid1.DataSource:=dm.DataSource1;
end;
如果不行的话,能不能实现这样:当我点按钮的时候显示进度条,查询完成后关闭进度条
本人比较菜,希望得到指点,先谢谢
本人msn: liuweiyc@hotmail.com 欢迎指教
[解决办法]
好像有点困难 一般我遇到这样的情况 都是自己在 写个窗体 窗体上就显示 正在计算中…
查询完后在释放掉
[解决办法]
慢的原因可能在这里
dm.ADO9.DisableControls;
while not dm.ADO9.Eof do
begin
k1:=dm.ADO9.fieldbyname( 'iQuantity ').AsFloat;
k2:=dm.ADO9.fieldbyname( 'iPrice ').AsFloat;
k3:=k3+k2;
k4:=k4+k1;
dm.ADO9.Next;
end;
dm.ADO9.EnableControls;
为什么不直接用SQL语句统计?