none
64bit版でDAOを使用するとエラーになる RRS feed

  • 質問

  • お世話になっております。

    環境は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」が作成されるのですが、それを参照しているようです。

    原因として何が考えられるでしょうか?また、解決法をご存知の方がいらっしゃいましたら教えてください。

    2010年10月5日 6:33

回答

  • 以下のページに次のように書かれていますので、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
    2010年10月5日 7:37
    モデレータ

すべての返信

  • 追記です。

    ソースを見ていたところ、ソースの先頭に以下のコードが記述されていました。

    Module UpgradeSupport
      Friend DAODBEngine_definst As New DAO.DBEngine
    End Module

    最初の投稿で追記した

    Dim DAODBEngine_definst As New DAO.DBEngine()

    は不要のようです。

    2010年10月5日 7:13
  • 以下のページに次のように書かれていますので、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
    2010年10月5日 7:37
    モデレータ
  • trapemiyaさん、回答ありがとうございます。

    なるほど、、、まさか提供が終了していたとは思いませんでした。

    これで納得です。

    サンプルプログラムなので、正直あまり手を加えたくないんですが、動作しないのであればしかたないと

    あきらめて、ほかの技術で作成しようと思います。

    ※VBは素人なので、どういったものがあるのやら、、、ADOとか聞いたことがあるので、その辺から調べようと思います。

    ありがとうございました。

    2010年10月5日 8:14