COMオブジェクトの解放 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 熊造  (社会人) 投稿日時 2010/1/16 07:50:59
魔界の仮面弁士さんありがとうございます。
うまくいきました
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/1/16 02:40:56
> acCon.CurrentDb.CreateQueryDef("****", ****) 
CurrentDb から返されるオブジェクトを、As DAO.Database な変数に
受け取っておき、使用後に ReleaseComObject しましょう。

また、CreateQueryDef から返されるオブジェクトも同様に、
As DAO.QueryDef で受け取っておく必要があります。
投稿者 熊造  (社会人) 投稿日時 2010/1/16 02:24:14
以前にもAccessのプロセスが残ることで相談させていただいたのですが

Dim acCon As New Access.Application
Dim acCmd As Access.DoCmd = acCon.DoCmd
    acCon.Visible = False 
    acCon.OpenCurrentDatabase("****.mdb")
    acCon.CurrentDb.CreateQueryDef("****", ****) 
    acCmd.OpenQuery("****")
    
    System.Runtime.InteropServices.Marshal.ReleaseComObject(acCmd)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(acCon)

これを実行するとacCon.CurrentDb.CreateQueryDefが原因だと思うのですがプロセス
が残ってしまいます。 変数に受けないといけないと思いいろいろ調べたのですがわかり
ません。
クエリーなんか作らずoleDbでSQLを実行したりDAOを使ってクエリーを作ることもできますが
Docmdとの組み合わせだと途中で少し待機させたりしないとうまく動きません
この掲示板で何度も質問をしてしまって申し訳ないのですが宜しくお願いします