【问题标题】:How to see progress of query execution during handle?处理期间如何查看查询执行进度?
【发布时间】:2011-05-13 08:01:19
【问题描述】:

我在 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;

但是.... 我看不到任何效果(这段代码没有执行)

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

按钮点击代码:

with ADOQuery1 do

begin

SQL.Clear;

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

Open;

end;

但我在进度条中没有任何突变,好像没有在 OnFetchProgress 事件中编写任何代码。

我代表你了吗?

【问题讨论】:

  • 请添加更多信息。我们对此无能为力。你的意思是你的程序没有被调用?在这种情况下,它与过程本身无关,而是安排调用它的代码,但您没有向我们展示任何这些。
  • 我编辑了我的问题....
  • 您是否正在检索您的记录asynchronously?

标签: delphi events dataset progress


【解决方案1】:

您必须在调用打开过程之前将属性ExecuteOptions 设置为eoAsyncFetch

检查此示例

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;

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多