with ADOQuery1 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from test');
      prepared;
      open;
    end;假设TEST表有里5000多条的记录,整个查询耗时20S,为了让用户知道查询正在进行中,想用个进度条来表示查询过程.烦请用代码,详细说明。

解决方案 »

  1.   

    不会这么长吧。。单表没那么慢的。。不过不太好加。。不太实际
    DB不支持进度显示,实在要加
    用 ADOQuery1 的 Options 的 eoAsyncFetch   true用adoquery1的onfetchprogress事件
    begin
      progressbar1.position;=progress*100 div maxprogress;
    end;
      

  2.   

    将ADOQuery的ExecuteOptions属性中的eoAsyncFetch(异步提取)设为TRUEprocedure TForm1.ADOquery1FetchProgress(DataSet: TCustomADODataSet;
      Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
      ProgressBar1.Position := Progress;
      progressbar1.Max := maxprogress;
      label1.caption := inttostr(progress)+'/'+inttostr(maxprogress);
      Application.ProcessMessages;
    end;