トップ回答者
64bit版でDAOを使用するとエラーになる

質問
-
お世話になっております。
環境は7とVistaの64bit版、VisualStudio2010です。
現在VBであるサンプル用のアプリの改変を行っております。
もともとVB.Net2003から動作していたソースをVS2010に変換しました。
32bit版でビルドし、動作させたところ正常に動作したのですが、64bit版(AnyCPU)でビルドしたところ
エラーが発生し、困っております。
[エラー内容]
(アプリケーション名).UpgradeSupportのタイプ初期化子が例外をスローしました。
[ソース]
Private db As DAO.Database Private rs As DAO.Recordset (省略) Dim dbName As String dbName = "Data.csv" db = DAODBEngine_definst.OpenDatabase(".", False, False, "Text;DATABASE=.;TABLE=dbName") ・・・1 rs = db.OpenRecordset(dbName, DAO.RecordsetTypeEnum.dbOpenTable)
ソース内1の箇所でエラーが発生しております。
調べたところ、DAODBEngine_definstの宣言を書くという情報が見つかったため、
下記のソースを追加しました。情報ソースは下記のURLです。
http://ap.atmarkit.co.jp/bbs/core/fdotnet/21418
どう宣言したかは書かれていなかったので、別途調べて以下のように記述しました。
Dim DAODBEngine_definst As New DAO.DBEngine()
そうしたところ、以下のエラーが発生しました。
「CLSID{00000100-0000-0010-8000-00AA006D2EA4}を含むコンポーネントのCOMクラスファクトリを取得中に、次のエラーが発生しました:80040154。」
80040154は、「クラスが登録されていません」というエラーのため、DAOのCOMを参照していないのかと思ってプロジェクトの設定を見てみたのですが、参照設定されていました。ビルドした際に、「Interop.DAO.dll」が作成されるのですが、それを参照しているようです。
原因として何が考えられるでしょうか?また、解決法をご存知の方がいらっしゃいましたら教えてください。
回答
-
以下のページに次のように書かれていますので、64bitでDAOを使うのは不可能ではないでしょうか?
引用開始---------------
DAO 3.6 が、このテクノロジの最後のバージョンです。これは、64 ビット Windows オペレーティング システムでは提供されない予定です。
引用終了---------------
データ アクセス テクノロジのロードマップ (MDAC 技術記事)
http://msdn.microsoft.com/ja-jp/library/ms810810.aspx#mdac%20technologies%20road%20map%20old_topic9
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク ofen 2010年10月5日 8:10
すべての返信
-
以下のページに次のように書かれていますので、64bitでDAOを使うのは不可能ではないでしょうか?
引用開始---------------
DAO 3.6 が、このテクノロジの最後のバージョンです。これは、64 ビット Windows オペレーティング システムでは提供されない予定です。
引用終了---------------
データ アクセス テクノロジのロードマップ (MDAC 技術記事)
http://msdn.microsoft.com/ja-jp/library/ms810810.aspx#mdac%20technologies%20road%20map%20old_topic9
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク ofen 2010年10月5日 8:10