首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

进度条的制作解决办法

2012-03-07 
进度条的制作请教高手我需要做下面这样一个进度条,该怎么做我现在做的一个小程序,在一个fsNormal窗体中有

进度条的制作
请教高手我需要做下面这样一个进度条,该怎么做  
我现在做的一个小程序,在一个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语句统计?

热点排行