如何获取 adoquery 的查询进度?

解决方案 »

  1.   

    加一个Adoconnection1并设置 
    ConnectOptions:=coAsyncConnect; 
    adoquery.connection:=Adoconnection1; ADOQuery的 ExecuteOptions 改为 [eoAsyncFetchNonBlocking],procedure TForm1.ADOQueryFetchProgress(DataSet: TCustomADODataSet; 
     Progress, MaxProgress: Integer; var EventStatus: TEventStatus); 
    begin 
     progressbar1.Position:=progress; 
    end; 
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject); 
    begin  
      ADOQuery1.ExecuteOptions := [eoAsyncFetch];//设为异步读取 
    end; 
    //ADOQuery的OnFetchProgress事件 
    procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress, MaxProgress: Integer; var EventStatus: TEventStatus); 
    begin  
      ProgressBar1.Position := Progress; 
      ProgressBar1.Max := MaxProgress; 
    end; 
    //ADOQuery的OnFetchComplete事件 
    procedure TForm1.ADOQuery1FetchComplete(DataSet: TCustomADODataSet; const Error: Error; var EventStatus: TEventStatus); 
    begin  
      ProgressBar1.Position := ProgressBar1.Max; 
      ShowMessage('OK'); 
    end;