- - PR -
adAsyncExecuteについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-06 13:23
いつもお世話になります。
VB6.0でSQLサーバー2000へアクセスしデータを取得するアプリケーションの開発を行っています。 ストアド実行に時間がかかってしまい、実行中にクリックなどユーザー側に されると、画面が固まったようになるのを防ぐ為下記のような処理で adAsyncExecuteを指定し固まるのを防ぐようにコーディングしたのですが 非同期実行の為直後の「If RS.EOF then 」にてエラーとなってしまいます。 '処理 コネクション作成 ↓ ストアドプロシージャ指定 ↓ Set rs = cmd.Execute(, , adAsyncExecute) ↓ If RS.EOF then ← エラーとなる exit sub end if ↓ Do Until rs.EOF 処理 Loop 直後の「If RS.EOF then 」でエラーを回避するようないい方法を ご存知の方がいらっしゃいましたら是非ご教授下さい。 どなたか良い方法をご存知の方はアドバイスをお願いします。 | ||||||||
|
投稿日時: 2008-10-06 14:08
ConnectionオブジェクトのExecuteCompleteイベントを使用してください。
| ||||||||
|
投稿日時: 2008-10-06 14:16
nakaP様ご返信ありがとうございます。
>ConnectionオブジェクトのExecuteCompleteイベントを使用してください。 ExecuteCompleteは自分のほうでもうまく利用できないものかと おもって念頭にはかんがえていたのですが、どのように記述していいのか 分からず、こちらの方法はあきらめておりました。 よろしければ、具体的な記述をご教授いただけないでしょうか?? | ||||||||
|
投稿日時: 2008-10-06 14:43
イベント プロシージャの用意の仕方がわからないだけみたいですね。 VB6.0 であれば WithEvents キーワードを使ってイベント ハンドラを紐付けるだけですね。
こんな感じだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-10-06 15:27
じゃんぬねっと様ご回答の方、ありがとうございます。
ご意見を参考にヘルプなどを調べてみたのですが、初心者なもので うまく記述できません。 図々しく申し訳ないのは承知ですが、 よろしければ、詳細をご教授願いたいのですが・・・。 | ||||||||
|
投稿日時: 2008-10-06 16:01
私は先にも書いているとおり "イベント プロシージャの用意の仕方がわからないだけ" だと思って回答しています。 ですので '何が' わからないのかを明示して頂かないと満足な回答ができない可能性が高いです。 変数名からして 'cmd' は ADODB.Command ですよね。 それと紐づいている ADODB.Connection の変数があるハズです。 その ADODB.Connection の変数の代わりとして私のコードにある 'Private WithEvents Connection...' を使うだけです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-10-06 16:22
cmd.Executeの戻り値は無視してください。
結果のRecordsetはExecuteCompleteイベントのpRecordsetで取得できます。 クエリなどを実行するプロシジャ(cmd.Executeを実行するところ)と結果を取得するプロシジャ(ExecuteComplete)が別になりますので、使用する変数の宣言場所(Connection,Commandなど)に注意してください。 |
1