4

重複の可能性:
ハンドル中にクエリ実行の進行状況を確認する方法は?

データベースから結果を取得するのにかかる時間を示す進行状況バーを表示したいと思います。

TADOQuery非同期モードで使用して開きます。クエリの状態がstFetchingの場合、[取得したレコード数 / 総レコード数] を知る方法はありますか?

4

2 に答える 2

4

イベントのハンドラーを作成しOnFetchProgressます。参照から:

OnFetchProgress イベント ハンドラーを記述して、非同期データ取得操作中に特定のアクションを実行します。OnFetchProgress イベントは、データの取得中に定期的に発生し、進行状況を示します。このイベントのハンドラーを作成して、データ取得の進行状況をユーザーに視覚的に示すなど、この定期的な通知に対応します。

イベントMaxProgressに渡される値は最良の推測であることに注意してください。ADO FetchProgress および FetchComplete イベントの使用方法から:OnFetchProgress

MaxProgress は、返される実際のレコード数と等しくありません。ADO は、この値を取得するためにレコードをフェッチする必要があります。これは、MaxProgress が最良の推測にすぎないことを意味します。MaxProgress は、通常、Progress に Background Fetch Size を加えたものに等しくなります。

Select Count() ..クエリを開く前にディエゴの回答に記載されているようにデータベースにa を発行して、取得されるレコードの正確な総数を取得できますが、冗長なテーブルスキャンと複雑なクエリのかなりの実行時間につながる可能性があるため、常に望ましいとは限りません.

于 2012-10-19T09:12:08.287 に答える
1

あなたが未来を予測できるとは思わないでください:)

ロードする前に、カウントをDBに送信して、ロードされるレコードの数を確認します。

バッチおよび各バッチで負荷を構築し、バッチのサイズ*バッチの量をレコードの総数と比較します。

于 2012-10-19T09:15:59.607 に答える