喫茶XRAYトップページ

[スレッド全体
]

[12627] 無題返信 削除
2019/3/14 (木) 17:48:07 Villa 〔HomePage
質問させていただきます。

現在、VCLフォームアプリケーションのシステムを作成しており、
TADOQueryを使用してSQL文をOpenしています。

そのデータベースの量が多く、結果のレスポンスが遅いため
progressbarを出して、styleプロパティを「pbstMarquee」に設定して起動させています。

問題はここからで、SQLの結果のレスポンスが遅いためなのか、
GUIの更新がなく、progressbarも止まったままで、SQLの結果が返ってきた後に動く、
ということになってしまっています。

どこで、マルチスレッド?のような仕組みで、
クエリのOpenとは別にProgressbarは動くようにならないものか、と思いました。

それができれば、同一フォーム内の複数のTADOQueryを同時オープンとかができるのではないか、、、など期待しております。

下手な文章ですが、もし手掛かりがあるようでしたら、教えていただけると幸いです。

よろしくお願いいたします。

[12628] クエリーの進捗をTProgressBar表示返信 削除
2019/3/14 (木) 19:30:51 Mr.XRAY
> GUIの更新がなく、progressbarも止まったままで、SQLの結果が返ってきた後に動く、
> ということになってしまっています。


う〜む.どうなんでしようね.
pbstMarquee は関係ないのかな.

クエリーの実行が遅いようですが,インデックスとかはとうなんでしよう.

こんなのもありますが・・・

[Data.Win.ADODB.TCustomADODataSet.OnFetchProgress]
http://docwiki.embarcadero.com/Libraries/Rio/ja/Data.Win.ADODB.TCustomADODataSet.OnFetchProgress

[TADOQuery で処理の進行状況を取得]
https://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1184.0
↑ こんなの書いていたんだ.全く記憶にございませんです.
おそらく何かのレスとして書いたのかも知れません.


[12629] Re:クエリーの進捗をTProgressBar表示返信 削除
2019/3/15 (金) 08:28:16 SO
▼ Mr.XRAYさん
 
> クエリーの実行が遅いようですが,インデックスとかはとうなんでしよう.

DBがなんなのか分かりませんが、SSMSだと不足しているインデックスを教えてくれたりします。。。
プロのDB設計者にはかなわないと思いますが。。。

[12630] Re2:クエリーの進捗をTProgressBar表示返信 削除
2019/3/15 (金) 10:25:22 Mr.XRAY
> DBがなんなのか分かりませんが、SSMSだと不足しているインデックスを教えてくれたりします。。。
> プロのDB設計者にはかなわないと思いますが。。。


へぇ〜,そんな仕様があるんですか.スゴイですね.
Paradox や JET だとインデックがなくてもそこそこ動作するようですが,
(ある程度の自動インデックスなのか ?)
インデックスが適切でないと悲惨ですからねぇ.

DB がなんのかも分かりませんし,
Tprogressba でどこでとんな進捗状況を見るのかも分かりませんが・・・(笑)
まっ,雑談系の掲示板なので・・・


[12639] Re3:クエリーの進捗をTProgressBar表示返信 削除
2019/3/15 (金) 13:42:21 Villa
▼ Mr.XRAYさん
> > DBがなんなのか分かりませんが、SSMSだと不足しているインデックスを教えてくれたりします。。。
> > プロのDB設計者にはかなわないと思いますが。。。
>
> へぇ〜,そんな仕様があるんですか.スゴイですね.
> Paradox や JET だとインデックがなくてもそこそこ動作するようですが,
> (ある程度の自動インデックスなのか ?)
> インデックスが適切でないと悲惨ですからねぇ.
>
> DB がなんのかも分かりませんし,
> Tprogressba でどこでとんな進捗状況を見るのかも分かりませんが・・・(笑)
> まっ,雑談系の掲示板なので・・・



情報が足りず、申し訳ないです。。
この問題でお聞きしたかったのはDBの遅さではなく、GUIの更新がなぜされないかということでしたので、
余分な情報は記載しておりませんでした。。

DBはSQL Serverです。

progressbarで何がしたいか、というと、
呼び出すデータが多いので、SQLが遅いこと自体は大丈夫なのですが、
ユーザーに体感的に動いていない、と思われたくないのでbarだけでも動かして、
待っていただけるような仕様にしたかった、ということです。



[12640] Re4:クエリーの進捗をTProgressBar表示返信 削除
2019/3/15 (金) 15:15:10 Mr.XRAY
> この問題でお聞きしたかったのはDBの遅さではなく、GUIの更新がなぜされないかということでしたので、

見えるオブジェクトは何でも GUI ですよね ?
何か更新どのように更新されないのですか ?
TProgressbar がバー全体で進捗状況を示す状態 (プログレスが往復する) に
ならないと思ったのですが.

だとすると,そのような更新がされないコーディングになっているとしか言えません.
だって,どんな場所でどんなようなコードなのか分かりませんので.
それ以上は何とも・・・

[ TProgressbar テストプログラム ]
http://mrxray.on.coocan.jp/Delphi/zip/plTProgressbarTest.zip
(既に削除しました)

↑ style プロパティが pbstMarquee の時は進捗状況の表示ではなく,
単に TPrgressbar のプログレスを往復表示のアニメーション表示するたけです.
このアニメーションを表示しないと言うことらしいのですが,
ちょっと分かりませんね.不思議な気もしますが.



[12641] Re5:クエリーの進捗をTProgressBar表示返信 削除
2019/3/15 (金) 16:10:23 Mr.XRAY
> 単に TPrgressbar のプログレスを往復表示のアニメーション表示するたけです.

使い方は説明するまでもないかも知れませんが,

  (1) アニメーション開始 ( style := pbstMarquee; にする)
  (2) 何かの処理
  (3) アニメーションを止める ( style := pbstNormal; にする)

ですが,何かの処理がアニメーションを止めてしまうのかも ?


[12642] Re6:クエリーの進捗をTProgressBar表示返信 削除
2019/3/15 (金) 16:18:19 Villa
▼ Mr.XRAYさん
> > 単に TPrgressbar のプログレスを往復表示のアニメーション表示するたけです.
>
> 使い方は説明するまでもないかも知れませんが,
>
>   (1) アニメーション開始 ( style := pbstMarquee; にする)
>   (2) 何かの処理
>   (3) アニメーションを止める ( style := pbstNormal; にする)
>
> ですが,何かの処理がアニメーションを止めてしまうのかも ?



まさにその問題で、通常であればpbstMarqueeでアニメーションが動く、
ということは存じ上げていますが、アニメーションを動かした後に重い処理のSQL文を
実行すると、barの進みも止まってしまい、重すぎる場合「応答なし」になります。

応答なし、になるのは構わないのですが、単にこのプログレスバーの処理を別ユニットに持たせて、
SQLを実行しているメインのユニットとは切り離してbarの進みだけでも動いておいてほしい、、、
というのが私の望みです。

[12643] 重い処理の問題返信 削除
2019/3/15 (金) 16:26:34 Mr.XRAY
▼ Villaさん

> ということは存じ上げていますが、アニメーションを動かした後に重い処理のSQL文を
> 実行すると、barの進みも止まってしまい、重すぎる場合「応答なし」になります。


なるほど.
それは TProgressbar の問題ではないですね.
その処理の問題でしょう.
 
> SQLを実行しているメインのユニットとは切り離してbarの進みだけでも動いておいてほしい、、、
> というのが私の望みです。


その処理が問題ですから,これは無理というか意味がないと思います.
TProgressbar がアニメーション表示していても,問題の処理,つまりプ処理が進んでいなくて,
停止状態になっているのですから.


[12644] 重い処理の問題返信 削除
2019/3/15 (金) 16:35:17 Mr.XRAY
> その処理の問題でしょう.

こんなとこがもしかしたら参考になるかもです.

「正しい GUI の作り方」- 重い処理で GUI が固まるのを防ぐ- PDF
http://edn.embarcadero.com/article/images/40483/2C.pdf

ただですね.私の勝手な予想ですが,
今回のはちょっと違う問題のような気がしますね.ハッキリ言って.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82