タイトル : Re^2: MS-ACCESSの解放が出来ません(解決) 投稿日 : 2016/02/03(Wed) 14:32 投稿者 : SUZUKI
魔界の仮面弁士さん、アドバイスありがとうございます MSACCESSが消えてくれて感激しております > 2016/04/12 延長サポート終了 > ということで、あと数ヶ月でサポート終了となる製品です。 > > 2005 への変換と併せて、現行バージョンへの移行計画も > 準備しておくことをお奨めします。 実はVB2005への変換で、他にもいっぱいつまずいておりまして 解決したら急ぎバージョンアップ検討します 自分だけ質問してもという事で調べてわからない時 またよろしくお願いします > > なお、上記にも書いていますが、移行作業とはいえ、DAO の継続利用は > 個人的にはお奨めしていません。とはいえ今回は DML ではなく DDL の操作なので、 > DAO (または ACEDAO) を使うのも已む無しですかね。 > DAOから離れないといけないのですが 知識不足です。がんばるしかないのですが > > > 記事NO.6555を見て.FIELDSを扱うのは解放が難しいと > (全角半角、大文字小文字の使い分けは適切に) > 了解です 統一するよう心がけます > > > DAODBEngine_definst > これは UpgradeSupport で提供される、DAO.DBEngine 型の変数ですね。 > tblDefs = DB.TableDefs > tblNew = tblDefs("DBDATA") > > flds = tblNew.Fields > fld = flds(CC) > > のように扱うようにします。 > Dim dbe As New dao.DBEngine Dim DB As dao.Database Dim tblDefs As Object Dim tblNew As Object Dim flds As Object DB = dbe.OpenDatabase(DbName) tblDefs = DB.TableDefs tblNew = tblDefs("DBDATA") flds = tblNew.fields にしたらうまく解放してくれました 一番のポイントは"DAODBEngine_definst"を使わない事でした 自動変換を信じると痛い目に会うという事ですね > それと、今回は使用されていないので問題ないのですが、 > For Each も避けるようにしてください。For Each を使うと、 > 裏で IEnumerator のインスタンスが生成されることになるので、 > 使用するライブラリによっては、解放が難しくなるためです。 > For Each も実はトライしていました おかげで助かりました ほんとに、ありがとうございました |