- - PR -
ともこ
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-03 13:49
いつもお世話になります。
VB6.0でSQLサーバー2000へアクセスしデータを取得するアプリケーションの開発を行っています。 For文などのループ処理中にユーザーのクリックイベント等が起きると、画面が「応答なし」となりホワイトアウトしてしまいます。この場合、For文中に「DoEvents」を記述するとWindowsに処理が移動し、「応答なし」を回避できることを知りました。 アプリケーションからストアドを実行し、データ取得まで時間がかかった場合も上記と同様に「応答なし」となるケースがあります。この場合、For文などのループ処理とは異なり処理中に「DoEvents」を書く事ができません。(下記参照) '処理 コネクション作成 ↓ ストアドプロシージャ指定 ↓ Set RS = cmd.Execute ← ここでデータ取得に時間がかかり、応答なしとなる ↓ If RS.EOF then exit sub end if このように処理がFor文以外の場合には、「DoEvents」のように「応答なし」を回避する事はできないのでしょうか? どなたか良い方法をご存知の方はアドバイスをお願いします。 | ||||||||||||
|
投稿日時: 2008-10-03 13:55
すみません、間違ってタイトルに名前を記入してしまいました。
件名は、「DoEvents処理について」です。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2008-10-03 15:01
あまり気軽に Interaction.DoEvents 関数を使わない方が良いです。
VB6 では同じプロセスとなると (フツーの方法では) できません。 プロセスを分けてそちらで実行してもらうのが無難でしょう。 今回はストアド プロシージャなので、仕様次第ではプロシージャ自体を細分化するという手段が取れるかもしれません。 そもそも時間のかかるストアド プロシージャが問題ですね。
編集で件名も修正できますよ。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2008-10-03 15:08
#編集機能裏付けしてたら先越された・・・
一応非同期実行は可能です。 cmd.Execute , , adASyncExecute もろもろ確認してませんので、ご注意を。 | ||||||||||||
|
投稿日時: 2008-10-03 15:16
お、非同期実行できる引数があったのですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1