[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/09/29(Thu) 18:57
投稿者名:長与
URL :
タイトル:
クエリの進行状況をプログレスバーで表示するには?
環境
■Windows XP
■VB6.0
質問
ローカルMDBファイルにADO接続し、SQLでデータ抽出処理を
行っていますが、処理中に進行状況をプログレスバーにて
表示させたいと思っています。しかし、クエリーの処理進行
状況を知る術が全くわかりません。よろしくご教授下さい。

投稿時間:2005/09/29(Thu) 20:48
投稿者名:neptune
Eメール:
URL :
タイトル:
Re: クエリの進行状況をプログレスバーで表示するには?
久しぶりに書き込みます。

記憶で書きますから、間違っているかもしれません。
間違っている場合はご指摘願います。

>しかし、クエリーの処理進行
>状況を知る術が全くわかりません。
ですが、恐らく出来ないのではないかと思います。(制御が戻ってこなかったと思う。)

無理やりやろうと思えば、新たにスレッドを作成して、タイマーをそこで動かし、
経過時間を表示させるか、前回の実行時間を参考に、プログレスバーで表示させるか
の方法なら出来ん事も無い・・・かもしれません。が、VBでマルチスレッドって
出来たんですかね?

投稿時間:2005/09/30(Fri) 08:12
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^2: クエリの進行状況をプログレスバーで表示するには?
安全性は判りませんが、出来るようです。

投稿時間:2005/09/30(Fri) 13:45
投稿者名:長与
URL :
タイトル:
Re^3: クエリの進行状況をプログレスバーで表示するには?
> 安全性は判りませんが、出来るようです。
なるほど、ご回答ありがとうございます。
技術的なことは置いといて、処理の方向性は理解できました。
しかし・・・。

「前回の実行時間を参考に」とういうことですが、SQLの処理時間自体、
結構まちまちなので、プログレスバーで表示する場合、かなり正確なもの
となると実現は望めないですかね?

投稿時間:2005/09/30(Fri) 20:49
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^4: クエリの進行状況をプログレスバーで表示するには?
>プログレスバーで表示する場合、かなり正確なもの
>となると実現は望めないですかね?
恐らく、無理と思います。

せいぜい、絵を動かすとか、経過時間を表示するとか、Userの気を紛らわすしかないのでは?

・・・・と書きましたが、私が知らないだけかも知れませんから、
もう少し識者の登場を待ってはどうでしょう。しかし、他にRes付かないということは
やはり無理なんですかね?

投稿時間:2005/09/30(Fri) 21:15
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^5: クエリの進行状況をプログレスバーで表示するには?
興味があるのでもうちょっと調べてみます。

投稿時間:2005/09/30(Fri) 22:38
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^6: クエリの進行状況をプログレスバーで表示するには?
真剣に調べてみました。

サーバー側カーソルで接続した場合に限りますが、
FetchProgress イベント
/////////MSDNより////////
非同期操作が長く続く場合、現在までに Recordset に取得された行数を報告するために FetchProgress
イベ
ントが定期的に呼び出されます。
//////////////////////////
を利用する事が出来るようです。やっぱり情報はMSDNですね。

知らんかった。googleでもVBのサンプルは発見できず。MSDNにVC++はあったけど。

新発見なので気力があったら検証してみます。

投稿時間:2005/10/03(Mon) 13:09
投稿者名:長与
URL :
タイトル:
Re^7: クエリの進行状況をプログレスバーで表示
返答ありがとうございます。

>真剣に調べてみました。
すみません自分も真剣に調べたつもりだったんですがm(_ _)m

見つけていただいた情報ですが、今回のローカル環境での処理には
使用ができないということで、残念です。
(・・・ちなみに、「サーバー側カーソルで接続時のみ」という情報は
どこにあったのでしょうか?→見つけられませんでした。)

しかし、別件で、データベースサーバーでのSQL抽出処理にも、
こういう機能が実現できればなぁと思っていましたので、
そちらで活用をしたいと考えています。

MSDNの情報を参考に、できる限りやってみます。

投稿時間:2005/10/03(Mon) 18:06
投稿者名:長与
URL :
タイトル:
Re^7: クエリの進行状況を...
neptuneさん、返答ありがとうございます。

>真剣に調べてみました。
すみません自分も真剣に調べたつもりだったんですがm(_ _)m

見つけていただいた情報ですが、今回のローカル環境での処理には
使用ができないということで、残念です。
(・・・ちなみに、「サーバー側カーソルで接続時のみ」という情報は
どこにあったのでしょうか?→見つけられませんでした。)

しかし、別件で、データベースサーバーでのSQL抽出処理にも、
こういう機能が実現できればなぁと思っていましたので、
そちらで活用をしたいと考えています。

MSDNの情報を参考に、できる限りやってみます。

投稿時間:2005/10/03(Mon) 18:55
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^8: クエリの進行状況を...
こんちはMSDNの検索ではヒットしないようですね。

複数のC言語の掲示板で探しました。そしたらFetchCompleteというキーワードが
判ったのでMSDNで気合を入れて探しました。そしたら結構ありましたよ。

Win32 およびCOM開発
 データアクセスコンポーネント
  Microsot DataAccess Component
   SDKドキュメント
    ADO
     Microsot ActiveX Data Object
      ADOプログラマーズリファレンス
       ADO API リファレンス
        ADO イベント
         FetchProgress イベント 
          ⇒関連項目⇒ADO イベント ハンドラの概要 
>hhttp://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/jpado260/htm/mdmscadoevents.asp

そのもののVBのサンプルもあるようです。
操作方法使用と FetchComplete イベント ADO FetchProgress
文書番号 : 262311
最終更新日 : 2004年7月13日
リビジョン : 2.2
>hhttp://support.microsoft.com/default.aspx?scid=kb;ja;262311

気力があれば自分で検証するつもりでしたが、この休み死んでました。^ ^;
なので、検証は自分でしてね。そのうち自分でもするつもりですけど・・・。
それでもって、出来たら教えてね。m(_ _)m

検証してないので、感になりますが、Helpを読んだ限り、
先に件数をカウントするとかしないと。「正確に」というのは
無理じゃないですか?

投稿時間:2005/10/03(Mon) 22:03
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^9: クエリの...
ゴメン

サーバー側カーソルってのはウソでした。
クライアント側でした。何故か書き間違えました。m(_ _)m

ちょっと検証してみました。
推測になりますが、Accessでメモリ展開?している時間はAccessが掴んで離さず
イベントが発生しないようです。その後実際に検索する時、一気に発生しました。

私が作っている40MBほどある方々の過去ログのDBを検索してみました。
WHERE 回答 like '%hoge%' ってな感じです。

どのように使用できるかは、いろんな条件での検証が必要ですね。

それにやはり、抽出数はイベントのたびに変化し、正確なものではありません。
やはり、前に書いたように、何がしかの方法でUserをなぐさめる手が一番
有効なような気もします。

それでは頑張って下さい。

投稿時間:2005/10/29(Sat) 02:37
投稿者名:はせ
Eメール:
URL :
タイトル:
Re^9: クエリの...
1対多数のテーブル関係があって多数のテーブルを処理するのならですけど・・・
先に処理対象となる基本レコード(1の方)のインデックsと件数を取得してから
順番意処理を継続してくなんてどうですか?
各処理を繰り返すコードが必要ですけど

 処理速度は落ちそうですけど・・・ 
  だめかね?
 出直してきます。