[vba覚書]mdbをaccdbへ変換したら動かない!

MS-Accessのリボンインターフェイスが大嫌いで頑なにAccess2003を使い続けた私。
でも、「2017年」「2018年」2度のOFFICE UPDATEで自作mdbプログラムが動かなくなり、渋々Access2016へアップグレード。

何がどこにあるかサッパリ分からないリボンインターフェイスと大きく変わった開発画面に毎日苦戦
アップグレード後、開発スピードは半分以下!

「いつかAccess2003に戻すかも?」と思い
使うファイルはAccess2000-2003用mdbファイルのままでした。

よく壊れるmdbファイル。
先日、15年以上機能拡張を続け巨大化した僕の相棒「katabe日常業務.mdb」の追加開発中にファイルが壊れ数日分のプログラムが消えちゃいました!

バックアップファイルで開発を再開したが・・・・

やっぱmdb怖いな!
最新フォーマットaccdbならきっと改良され
mdbよりは壊れにくいはず!

そこで「いつかAccess2003へ戻るかも」を諦めaccdbへ変換!
20190209mdbをaccdbへ変換したら動かなくなった!


でも、変換後いきなりエラー!

型が一致しません

20190209mdbをaccdbへ変換したら動かなくなった!


原因をGoogle検索、見つけたのが下のページ。
[OpenRecordset メソッドを実行すると “型が一致しません” というエラー メッセージが表示される–microsoft]

原因
Data Access Objects (DAO) ライブラリと ActiveX Data Objects (ADO) ライブラリの両方に対する参照がプロジェクトに含まれている場合、Recordset オブジェクトを宣言すると、複数の Recordset エントリが一覧に表示されることがあります。このエラーは、どちらの Recordset エントリを一覧から選択するかに関係なく、[参照設定] ダイアログ ボックスで ADO ライブラリの優先順位を DAO ライブラリよりも高くした場合に発生します。

解決方法
DAO と ADO の両方の Recordset オブジェクトを参照および使用する必要がある場合は、各オブジェクトを次のように明示的に宣言します。
Dim adoRS As ADODB.Recordset
Dim daoRS As DAO.Recordset

僕のプログラムの場合

DAO.を書き足すとエラーが消えました。
なるほど、新しくすると新しいエラーと遭遇するのね!

長い期間、日々新たな機能を追加し続けたこのファイル!
初期はDAOで開発し、途中からADOに・・・
使い回しが利く機能は、昔のDAOプログラムをコピペし改造

このAccessプログラム、新旧混ざり合う混濁状態なんです。

コメントを残す

メールアドレスが公開されることはありません。