COMオブジェクトの解放 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2010/1/16 02:40:56
> acCon.CurrentDb.CreateQueryDef("****", ****)
CurrentDb から返されるオブジェクトを、As DAO.Database な変数に
受け取っておき、使用後に ReleaseComObject しましょう。
また、CreateQueryDef から返されるオブジェクトも同様に、
As DAO.QueryDef で受け取っておく必要があります。
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との組み合わせだと途中で少し待機させたりしないとうまく動きません
この掲示板で何度も質問をしてしまって申し訳ないのですが宜しくお願いします
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との組み合わせだと途中で少し待機させたりしないとうまく動きません
この掲示板で何度も質問をしてしまって申し訳ないのですが宜しくお願いします
うまくいきました