アクセスを実行した後、Quitしたときのエラー

タグの編集
投稿者 おさきママ  (社会人) 投稿日時 2009/10/6 22:37:51
VB:VisualBasic6.0
OS:WindowsXP
ACCESS:ACCESS2000

上記のような環境で開発しています。
VBで、ボタン押下時に、アクセスのレポート印刷を行っています。

1.ACCESSの新しいインスタンスを作成
2.データベースをアクセスウィンドウで開く
3.レポートの印刷
4.現在開いているデータベースを閉じる
5.インスタンス破棄

このようにすると、アクセスのウィンドウだけが残って
しまうので、「Application.Quit」という命令を
一番最後につけました。
そうすると、1度目は、アクセスウィンドウが消え正常に
動くのですが、2回目は、
「リモート サーバーがないか、使用できる状態ではありません。」
というエラーが出てしまいます。

同じことを繰り返しても、アクセスウィンドウを正常に消すためには
どのようにしたらよいのでしょうか?
投稿者 るしぇ  (社会人) 投稿日時 2009/10/7 03:24:51
日本語での設計レベルの流れは問題ないのでは?

アクセスのウィンドウが残るのは目に見えて
分かり易いですが、更に重要なのは、プロセスを
終了できていないのでは?ということでは。

単純にプロセスが残っているかどうかは、タスクマネージャ
で確認できると思います。
あとは、エラーメッセージでWEB検索すれば過去の事例が
引っ掛かるので、該当しないか確認してみるとか。
投稿者 るきお  (社会人) 投稿日時 2009/10/7 21:29:07
こんにちは。

提示されている情報からではるしぇさんの回答に集約されます。

私ならタスクマネージャを開いた状態でプログラムを実行し、
Accessの生成と破棄が想定どおりのタイミングで行われていることを確認します。
たぶん、破棄がうまくいっていないようですので、
そのことを確認した後、どうして破棄されていないのか調べる
という順になるかと思います。

上記過程にには経験上のきめ付けが入っていますので、ケースバイケースで通用しないこともあります。
投稿者 おさき  (社会人) 投稿日時 2009/10/9 19:40:06
お返事ありがとうございます。

インスタンスを作成する際に、
「CreateObject」を使っているのですが、
これは、あまりよくないようですね・・・
エラー内容で調べている最中です。

まだ、解決していないですが、
もう少し調べてみます。
ありがとうございました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/10/9 20:43:02
> Application.Quit

この場合の「Application」の部分が、New もしくは CreateObject もしくは GetObject で
取得/生成した Access.Application インスタンスの変数になっているか確認してください。

もしも変数ではなく、直接 Application.Quit と書いているのだとしたら NG です。


また、変数名.Quit と書いているにも関わらず、2回目以降の動作に問題があるようなら
それ以前の箇所に問題がある事になります。その場合には、レポート処理などの箇所を
コメントアウトして動作を確認していき、どの箇所を実行すると、2回目以降の動作に
問題が生じるのかを突き止めるようにしてみてください。
投稿者 おさきママ  (社会人) 投稿日時 2009/10/13 19:40:43
お返事ありがとうございます。

Apprication.Quit
と書いてありました。。。

これを、
accApp.Quit (accAppは、アクセスアプリケーションの変数)
としたら、できるようになりました。

ありがとうございました。