アクセスデータベースで一連のクエリを実行し、結果のデータテーブルをExcelファイルに保存するクライアント用の短いユーティリティプログラムを作成しています。アクセスファイルへの初期接続を確立できません。
アクセスクエリは次のように設定されています。接続しているファイル(Access1と呼びます)には、実行する必要のあるクエリが保存されています。照会されるテーブルは、別のアクセスファイル(Access2)にあります。接続を開こうとすると、プログラムは例外をスローします。
これが私の接続方法です
private static OleDbConnection GetConnection()
{
var connection = new OleDbConnection
{
ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False", accessFilename)
};
connection.Open();
return connection;
}
私は他のいくつかの回答(特にここ)のアドバイスに従いましたが、それでもエラーが発生します。
私は、オフィスの約半分のコンピューターでプログラムを正常に実行できるため、問題がコード自体にあると完全に確信しているわけではありません。これは私にそれがドライバーまたはオフィスバージョンの問題だと思わせます。
私のマシン(プログラムを実行しません)はOffice 201064ビットおよび64ビットWindows7を実行しています。私の知る限り、これはこのマシンにインストールされているWindows/Officeの唯一のバージョンです。
私のスーパーバイザーのマシン(それを実行します)は、オフィスとウィンドウの両方でまったく同じバージョンを実行しています。さらに、プログラムを実行するために彼のマシンに余分なものをインストールする必要はありませんでした。彼のマシンは数回ブロックされており、おそらく2007年または32ビット2010年のいずれかの時点で以前のバージョンのオフィスがありました。彼は正確に思い出せない。
正常に実行されるその他のOffice/Windowsバージョンは、-Windows764ビット/Office200732ビット-WindowsXP/ Office200732ビットです。
別のしわを追加するために、ファイル名を他のアクセスファイルに変更すると、マシン上で問題なく接続が開きます。完全に異なるファイルであるため、クエリを実行するとすべてのクエリが実行されませんが、接続は正常に開きます。
必要なアクセスファイル以外のアクセスファイルにも正常に接続できるので、外部プログラムが接続できるように変更する必要がある1つのアクセスファイルの設定はありますか?他のコンピュータがそれをうまく行うことができるので、私はそうは思わないでしょう。
または、MS Accessに接続するために見落としていて、インストールする必要があるドライバーやリファレンスなどはありますか?もしそうなら、どうすれば他のAccessファイルに接続できますか?