
対象となるケース:
過去にDelphi/C++Builder/RadStudio 2009のインストール => アンインストールし、
Delphi/C++Builder/RadStudio 2007のインストールを行った場合

対象となるOSプラットホーム:
Win32

データエクスプローラは .NET経由でdbExpressライブラリを呼び出しています。
正確には、Borland.Data.AdoDbxClientアセンブリ内のライブラリからdbExpressのドライバを呼び出しているのですが、VCLフォームにdbExpressコンポーネントを置き、プログラムを実行(ネイティブ接続)した場合には問題なく実行できるケースでも、データエクスプローラからdbExpress接続を行った場合、エラーが表示され、正常に実行できないことがあります。
これは、上述しましたようにデータエクスプローラが.NET環境に依存していることが原因の一つとなります。

この記事では、Delphi/C++Builder/RadStudio 2007製品のご利用で、データエクスプローラでdbExpress接続を行った場合、発生する2つのエラーケースを紹介します。

(ケース1 ) Invalid argument もしくは unknown driverのエラーが発生する




上記のようなエラーが発生した場合は、データエクスプローラが参照するBorland.Data.AdoDbxClientアセンブリが2007用では無い可能性が考えられます。
Windowsエクスプローラで、GACのフォルダを開いてBorland.Data.AdoDbxClientアセンブリ情報をご確認ください。(GACのフォルダは、デフォルトでC:\Windows\assemblyとなります。)

Borland.Data.AdoDbxClientアセンブリバージョンは、Delphi/C++Builder/RadStudio2007,Delphi/C++Builder/RadStudio 2009 共に同じ“11.0.5000.0”なのですが、ファイルバージョンが異なります。
以下の図をご覧ください。

2007用のアセンブリ



2009用のアセンブリ


Delphi/C++Builder/RadStudio 2009製品をアンインストールしても、GAC内のアセンブリキャッシュは削除されません。

また2009用のBorland.Data.AdoDbxClientアセンブリのほうがファイルバージョンとしては
新しいため、Delphi/C++Builder/RadStudio 2007をインストールしてもこのBorland.Data.AdoDbxClientアセンブリがGAC内にキャッシュされていると、適切に置き換わらないことがあります。
その結果、2009用の同名アセンブリを利用することになり、ケース1で紹介したエラーが発生します。

この問題を解決するためには、GAC内のBorland.Data.AdoDbxClientアセンブリを一旦アンインストールした後、
<CommonFilesFolder>\CodeGear Shared\RAD Studio\Shared Assemblies\5.0以下に
保持されているBorland.Data.AdoDbxClient.dllを
グローバルアセンブリキャッシュツール(GacUtil.exe)を利用してGACへインストールし直してください。

詳しくは、「製品アンインストール後のGACの削除について」
http://support.codegear.com/article/39299/
をご覧ください。

(ケース2 ) AdoDbxプロバイダがロードできない



上記のようなエラーが発生した場合は、.NETの環境情報ファイルmachine.configの定義内容が不正である可能性が考えられます。
データエクスプローラは、machine.configファイルの設定情報を参照しているのですが、Delphi/C++Builder/RadStudio製品を再インストールすることで、
下記のように“AdoDbx Data Provider”のエントリが重複して登録されることがあります。



登録されているアセンブリ情報自体は、全く同一の内容なので、この設定のままデータエクスプローラがmachine.configを参照すると、ケース2で紹介したエラーが発生します。

machine.configファイルの格納場所(デフォルト)は、

Windows 32ビットOS:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG
Windows 64ビット OS:
C:\WINDOWS\Microsoft.NET\Framework(x86)\v2.0.50727\CONFIG
もしケース2に該当した場合の問題解決の方法は、上図 machine.configで示すAdoエントリのどちらか片方を手動で削除する必要があります。
(上記の作業を行う前に、必ずmachine.configファイルをバックアップしてください)
