如何在句柄中查看查询执行的进度?

Nil*_*phi 3 delphi events progress dataset

我在delphi中使用以下代码来处理:

procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress,

  MaxProgress: Integer; var EventStatus: TEventStatus);

begin

    Progressbar1.Visible:=true;

    Progressbar1.Max:=MaxProgress;

    Progressbar1.Ppsitian:=Progress;

    Progressbar1.Visible:=false;

end;
Run Code Online (Sandbox Code Playgroud)

但....我看不到任何效果(此代码不执行)

我想显示在用户点击数据库中的SEARCH按钮从开始到完成过滤器中的过滤时查询执行的进度.

按钮onclick代码:

with ADOQuery1 do

begin

SQL.Clear;

SQL.Add('select * from tbl1 where id = '+Edit1.Text);

Open;

end;
Run Code Online (Sandbox Code Playgroud)

但我在进度条中没有任何变异,好像不在OnFetchProgress事件中写任何代码.

我代表你了吗?

RRU*_*RUZ 5

您必须将属性设置ExecuteOptionseoAsyncFetch之前调用打开过程

检查这个样本

with ADOQuery1 do
begin
 SQL.Clear;
 SQL.Add('select * from tbl1 where id = '+Edit1.Text);
 ExecuteOptions:=[eoAsyncFetch];
 Open;
end;


procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress,
  MaxProgress: Integer; var EventStatus: TEventStatus);
begin
  ProgressBar1.Max      :=MaxProgress;
  ProgressBar1.Position :=Progress;
  Application.ProcessMessages;
end;
Run Code Online (Sandbox Code Playgroud)