C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: ProgressBar


(過去ログ 82 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■48835 / inTopicNo.1)  ProgressBar
  
□投稿者/ にょろ (2回)-(2010/04/15(Thu) 10:53:02)

分類:[.NET 全般] 

SQLでDBからレコードを取得するのですが、少々時間がかかってしまいます。
そのためProgressBarを表示したいのですが、進捗状況を取得することはできますか?
引用返信 編集キー/
■48839 / inTopicNo.2)  Re[1]: ProgressBar
□投稿者/ επιστημη (2480回)-(2010/04/15(Thu) 11:54:18)
επιστημη さんの Web サイト
> SQLでDBからレコードを取得するのですが、少々時間がかかってしまいます。

これ以上速くはできないのかしら。そっちが気になる。

> そのためProgressBarを表示したいのですが、進捗状況を取得することはできますか?

どうなんでしょうね。RogressBarは何を表わすんです?

引用返信 編集キー/
■48841 / inTopicNo.3)  Re[1]: ProgressBar
□投稿者/ ヴァン (71回)-(2010/04/15(Thu) 11:58:05)
No48835 (にょろ さん) に返信
> SQLでDBからレコードを取得するのですが、少々時間がかかってしまいます。
> そのためProgressBarを表示したいのですが、進捗状況を取得することはできますか?

まあ、やろうと思えば出来るかも?

引用返信 編集キー/
■48845 / inTopicNo.4)  Re[1]: ProgressBar
□投稿者/ nakaP (1回)-(2010/04/15(Thu) 12:41:09)
nakaP さんの Web サイト
No48835 (にょろ さん) に返信
> SQLでDBからレコードを取得するのですが、少々時間がかかってしまいます。
> そのためProgressBarを表示したいのですが、進捗状況を取得することはできますか?


どちらかというと、取得よりもその後の表示などの処理に時間がかかっているのではないですか?
引用返信 編集キー/
■48847 / inTopicNo.5)  Re[1]: ProgressBar
□投稿者/ はつね (1252回)-(2010/04/15(Thu) 13:04:43)
No48835 (にょろ さん) に返信
> SQLでDBからレコードを取得するのですが、少々時間がかかってしまいます。
> そのためProgressBarを表示したいのですが、進捗状況を取得することはできますか?

DBにSELECT文をなげてそれが帰ってくるまでの進捗状況(DBで何%まで処理完了とか)は取得できません。
帰ってきた結果を表示するときに進捗状況を表示するのであれば、データバインド使わずに
例えば1レコードづつ表示しながら進捗を表示するとかはできます。

あとは、単純にProgressBarを大体の処理時間で表示するのであれば、Background Workerあたりを
つかってデータ取得とは別にProgressBarを表示させれば可能です。
引用返信 編集キー/
■48848 / inTopicNo.6)  Re[2]: ProgressBar
□投稿者/ .SHO (1300回)-(2010/04/15(Thu) 13:14:40)
> DBにSELECT文をなげてそれが帰ってくるまでの進捗状況(DBで何%まで処理完了とか)は取得できません。
> あとは、単純にProgressBarを大体の処理時間で表示するのであれば、Background Workerあたりを
> つかってデータ取得とは別にProgressBarを表示させれば可能です。

ちなみに
DBにSELECT文をなげる前にSELECT文にCOUNT()を付けてレコード数を求めてから
大体の処理時間をレコード数で割ってProgressBarを進めると、それっぽくはなります。

引用返信 編集キー/
■48852 / inTopicNo.7)  Re[3]: ProgressBar
□投稿者/ にょろ (3回)-(2010/04/15(Thu) 14:00:18)
ありがとうございます。

皆様のアドバイスを検討し、COUNT()を取得することとしました。

解決済み
引用返信 編集キー/
■48859 / inTopicNo.8)  Re[4]: ProgressBar
□投稿者/ みきぬ (866回)-(2010/04/15(Thu) 14:23:03)
> これ以上速くはできないのかしら。そっちが気になる。

↑ところで、こっちは検討しないの?
ProgressBar を出す必要がなくなるのが一番幸せだと思うよ。

それに、仮にこれ以上速くできないにしても、どこに時間がかかっているかは把握しておく必要はあると思うよ。
だって、その箇所によっては ProgressBar の意味がないかもしれないんだし。

あと、進捗状況に必ずしもこだわらなくていいと思うよ。
「少々時間が」が具体的にどのくらいかわからないけど、1秒やそこらであれば砂時計アイコンでもいいし、
もう少し長くても「しばらくお待ちください」ダイアログで十分だったりもするし。
引用返信 編集キー/
■48878 / inTopicNo.9)  Re[5]: ProgressBar
□投稿者/ にょろ (4回)-(2010/04/15(Thu) 16:41:07)
No48859 (みきぬ さん) に返信
>>これ以上速くはできないのかしら。そっちが気になる。
>
> ↑ところで、こっちは検討しないの?
> ProgressBar を出す必要がなくなるのが一番幸せだと思うよ。
>
> それに、仮にこれ以上速くできないにしても、どこに時間がかかっているかは把握しておく必要はあると思うよ。

> だって、その箇所によっては ProgressBar の意味がないかもしれないんだし。
>
> あと、進捗状況に必ずしもこだわらなくていいと思うよ。
> 「少々時間が」が具体的にどのくらいかわからないけど、1秒やそこらであれば砂時計アイコンでもいいし、
> もう少し長くても「しばらくお待ちください」ダイアログで十分だったりもするし。


> それに、仮にこれ以上速くできないにしても、どこに時間がかかっているかは把握しておく必要はあると思うよ。
ご指摘ありがとうございます。既に調査済みです。

今回の問題点はどのようにProgressBarを表示するかというところです。
テストや検証を重ね、この質問に至っております。

> ProgressBar を出す必要がなくなるのが一番幸せだと思うよ。
どのような点ででしょうか?出す必要がなくなるというのはプログラムする手間が省けるからってことですか?
早い遅いに関わらずどれくらい処理が進んでるかとか、どれくらいで終わるのかとかって表示された方が使う側からすれば安心ですよね。
あまりにも主観的だと思いましたが…
今回はユーザーより表示して欲しいということなのです。

> あと、進捗状況に必ずしもこだわらなくていいと思うよ。
> 「少々時間が」が具体的にどのくらいかわからないけど、1秒やそこらであれば砂時計アイコンでもいいし、
> もう少し長くても「しばらくお待ちください」ダイアログで十分だったりもするし。
十分かどうかは使う人が決めることですよね…。


解決済み
引用返信 編集キー/
■48880 / inTopicNo.10)  Re[6]: ProgressBar
□投稿者/ みきぬ (869回)-(2010/04/15(Thu) 17:05:52)
No48878 (にょろ さん) に返信
>>ProgressBar を出す必要がなくなるのが一番幸せだと思うよ。
> どのような点ででしょうか?出す必要がなくなるというのはプログラムする手間が省けるからってことですか?
> 早い遅いに関わらずどれくらい処理が進んでるかとか、どれくらいで終わるのかとかって表示された方が使う側からすれば安心ですよね。

遅い場合はその通りだと思いますが、ProgressBarを表示してもすぐに100%になるレベルまで
処理を速めることができれば、そもそも出す必要性がなくなりますよね、ってことです。

# 脱線ですが、件数が多くて処理に時間がかかりそうな場合は
# メッセージを出して検索条件を見直してもらうとか、そういうアプローチもあります。

それと私が気にしているのは、質問の状況で信頼できる進捗状況を出せるのかどうかです。
100% になってもなかなか終わらないような ProgressBar を作ってしまうくらいなら、
ないほうがましだとさえ思います。
解決済み
引用返信 編集キー/
■48883 / inTopicNo.11)  Re[4]: ProgressBar
□投稿者/ επιστημη (2481回)-(2010/04/15(Thu) 17:13:38)
επιστημη さんの Web サイト
> 皆様のアドバイスを検討し、COUNT()を取得することとしました。

ってことは、SELECT自体はごく短時間で終了するってことですね。
そうでないとPrograssBarが動き始めるまでにン十秒かかっちゃシャレならんわけで。

引用返信 編集キー/
■48886 / inTopicNo.12)  Re[5]: ProgressBar
□投稿者/ .SHO (1305回)-(2010/04/15(Thu) 18:11:24)
> ってことは、SELECT自体はごく短時間で終了するってことですね。
> そうでないとPrograssBarが動き始めるまでにン十秒かかっちゃシャレならんわけで。

COUNT付けるとレコード数だけ調べて数値を返すだけなんで
実際にデータを取得するSELECT文よりは、はるかに速いです。

引用返信 編集キー/
■48887 / inTopicNo.13)  Re[5]: ProgressBar
□投稿者/ aetos (274回)-(2010/04/15(Thu) 18:18:35)
2010/04/15(Thu) 18:18:53 編集(投稿者)

No48883 (επιστημη さん) に返信
>>皆様のアドバイスを検討し、COUNT()を取得することとしました。
>
> ってことは、SELECT自体はごく短時間で終了するってことですね。
> そうでないとPrograssBarが動き始めるまでにン十秒かかっちゃシャレならんわけで。

ちょっと理解がズレてるかも。

COUNT 取ってから後の処理を1行ずつやりながら ProgressBar を進めるんではないと思います。

No48848 が正しく伝わってればですが…
COUNT は、データ取得に実際どれだけの時間がかかるかはわからないけれど、あてずっぽうで ProgressBar を出すための判断材料にするのかなーと。

で、個人的には、(100% になる前に終わる可能性はともかくとして)100% になっても終わらない可能性のある信頼性の低い ProgressBar を出すよりは、ProgressBarStyle.Marquee を使った方がいいんじゃないかと思います。
引用返信 編集キー/
■48904 / inTopicNo.14)  Re[6]: ProgressBar
□投稿者/ にょろ (5回)-(2010/04/16(Fri) 09:00:45)
ありがとうございます。

aetosさんの言う通り、COUNT()で件数取得し、「○件取得中です...」というメッセージとStyleがMarqueeのPrigressBarを表示しました。



引用返信 編集キー/
■48909 / inTopicNo.15)  Re[6]: ProgressBar
□投稿者/ .SHO (1306回)-(2010/04/16(Fri) 10:02:15)
> で、個人的には、(100% になる前に終わる可能性はともかくとして)100% になっても終わらない可能性のある信頼性の低い ProgressBar を出すよりは、ProgressBarStyle.Marquee を使った方がいいんじゃないかと思います。

ProgressBar の style に Marquee なんてあるんですね。
知らなかった。こりゃ便利だ。^^;

# 一度外れちゃったけど、もうよさそうなんで解決済みにしときますね。
解決済み
引用返信 編集キー/
■48911 / inTopicNo.16)  Re[7]: ProgressBar
□投稿者/ なちゃ (424回)-(2010/04/16(Fri) 10:12:42)
手っとり早くて悩みがないのはマーキースタイルですね。
クラシック表示とかしてらハマりそうですが。

IEなんかだと、例えば最初にサーバーから応答があるまで、
というか受信予定サイズが分かるまでは極ゆっくりとバーを進め、
サイズが分かった時点でその位置から正確な受信量表示にしてるような感じです。
今回の例だと、カウント完了するまではゆっくりと進めて、
カウント判明したらその位置から件数に対応した表示にする感じですね。
まあ、工夫の仕方は色々あるとは思います。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -