タイトル : Re^3: DAOによるOpenDatabaseについて 投稿日 : 2011/06/01(Wed) 16:55 投稿者 : 魔界の仮面弁士
> Set db = db2 ----- は何をしているのですか? No15195 のコードで、変数 db は Form1 のモジュールレベル変数になっていましたよね。 単に、そのモジュールレベル変数への代入操作です。 一方、db1, db2 は Sub Form_Load() 内のプロシージャレベル変数を想定しています。 こちらの変数は、プロシージャが End Sub に到達した時点で解放されます。 > この場合、rsID が (a) の後でも ID.mdb を参照できるのはなぜなのでしょうか? ID.mdb が閉じられていないからです。 > (a) で、db は master.mdb を参照するように変更になったのではないのでしょうか その通りです。ですから今後、db.OpenRecordset の呼び出しは、 ID.mdb ではなく master.mdb に対して行われるようになります。 ただし、ID.mdb が閉じられたわけではありません。単に、変数 db が その Database を参照しなくなったというだけのことです。 ID.mdb が閉じられたわけではありませんから、rsID はそのまま利用できますし、 ID.mdb を開いている Database オブジェクトのインスタンスを再入手すれば、 変数 db を使わずとも、引き続き ID.mdb の操作が可能です。 なお、 Database オブジェクトは Databases コレクションとして保持されています。 Debug.Print DBEngine.Workspaces(0).Databases.Count Debug.Print DBEngine.Workspaces(0).Databases(0).Name Debug.Print DBEngine.Workspaces(0).Databases(1).Name Debug.Print DBEngine.Workspaces(0).Databases(0).Recordsets.Count Debug.Print DBEngine.Workspaces(0).Databases(1).Recordsets(0).Name |