2010-11-21 24 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

は、より多くの情報を追加してください

チェックオープンプロシージャを呼び出すために前eoAsyncFetchにプロパティExecuteOptionsを設定する必要があります。私たちはこれを手助けすることはできません。あなたの手続きが呼ばれていないことを意味しますか?この場合、プロシージャ自体とは関係ありませんが、呼び出されるように手配しているコードはありますが、私たちにはそれが表示されていません。 –

+0

私の質問を編集しました.... – NiliDelphi

+2

[非同期で]レコードを取得していますか(http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devwin32/adofetchingrecordsasynchronously_xml.html)? –

答えて

5

あなたは、このサンプル

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

関連する問題