Windows 7 (64 ビット) に Firebird 3.0 (Firebird-3.0.0.32483_2_x64) をインストールしました。ISQL を使用して Firebird データベースを作成し、Microsoft Access データベースからデータをコピーしたいと考えています。
Firebird ODBC ドライバー (Firebird_ODBC_2.0.4.155_x64) をインストールし、コントロール パネルのデータ ソース (ODBC) からユーザー DSN を設定しました。このクライアント (C:\Program Files\Firebird\Firebird_3_0\fbclient.dll) を使用しています。「接続のテスト」をクリックすると、「接続に成功しました」というメッセージが表示されます。
その後、Access 2013 を起動しました。実行可能ファイルは「プログラム ファイル (x86)」ではなく「プログラム ファイル」にあるため、これは 64 ビット コードであると想定しています。ODBC ソース (現在は「マシン データ ソース」として表示されています) へのリンクを作成しようとすると、次のメッセージが表示されます –</p>
ODBC 呼び出しに失敗しました
[ODBC Firebird driver] Unable to connect to data source:library 'C:\Program Files\Firebird\Firebird_3_0\fbclient.dll' failed to load.(#-904)
誰でもこれを手伝ってもらえますか?私がオンラインで調べた限りでは、64 ビット プログラムを 32 ビット ドライバで使用すると問題が発生し、その逆も同様であることが示唆されていますが、私が行っていることはすべて 64 ビット領域で行うべきだと思います。また、904 は「使用できないデータベース」を示している可能性があることも読みましたが、その時点で ISQL を開いてデータベースに正常にアクセスできます。
Dalton の提案に対する回答 - コントロール パネルでシステム DSN を作成しました。Access を開いて ODBC データ ソースを確認しても、そこにはありません。Microsoft の Web サイトを見ると、これは既知の問題のようです。
これを試してみると、Microsoft が「プログラム ファイル (x86)」ではなく「プログラム ファイル」にインストールしているにもかかわらず、PC にインストールされている Access 2013 が 32 ビットの実行可能ファイルであることがわかりました。
32 ビット ODBC ソースに切り替え、32 ビット ODBC アドミニストレーターを使用してセットアップし、Access からリンクしようとすると、「[ODBC Firebird ドライバー] プラグイン Engine12 のロード中にエラーが発生しました。モジュール C:\Program Files\Firebird\Firebird_3_0\plugins\Engine12 は存在しますが、ロードできません (#-901)」。
Firebird は Engine12.dll のコピーを 1 つしかインストールしていませんが、これは 64 ビットの dll であると想定しているため、それが機能しない理由はわかりますが、ここからどこに行けばよいのでしょうか?