2010-11-21 31 views
3

我用下面的代碼在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按鈕以完成進度條中的過濾器時執行查詢。

按鈕的onclick代碼:

with ADOQuery1 do 

begin 

SQL.Clear; 

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

Open; 

end; 

,但我不進度條任何突變,好像不寫在OnFetchProgress事件的任何代碼。

我代表你嗎?

+0

請添加更多信息。我們無法從中幫助。你的意思是你的程序沒有被調用?在這種情況下,與程序本身無關,而是安排它被調用的代碼,但是你沒有向我們展示過任何。 – 2010-11-21 09:12:44

+0

我編輯了我的問題.... – NiliDelphi 2010-11-21 12:30:37

+2

您是否正在檢索您的記錄[異步](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devwin32/adofetchingrecordsasynchronously_xml.html)? – 2010-11-21 12:58:15

回答

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; 
+0

坦克你爲這個answare – NiliDelphi 2010-11-22 08:18:32