Ok。64 ビット O/S で Office 32 ビットを使用している場合は、適合します。「プラットフォーム出力」を x86 に変更してみてください。プロジェクトのプロパティに移動し、[ビルド] タブを見つけます。「プラットフォームターゲット」がそこにリストされているはずです。
たとえそれが機能したとしても、その決定の影響を調査する必要があります。しかし、少なくとも「あなたは知っているだろう」。
編集 - - - - - - -
これがあなたの順列です。そして、あなたはそれらを試してみる必要があります。
接続文字列、正しいか間違っているか。前述の「12」対「14」。(すみません、リンクはExcelについてです。「TS」からの提案を使用してみてください。)
Office 32 ビットがインストールされています。そのマシンに「AccessDatabaseEngine_x64.exe」をインストールしようとすると、「Office のバージョンが正しくありません」というエラーが表示されると思います。
#2のため、「AccessDatabaseEngine.exe」をインストールする必要があります。これは32ビットです。
「プラットフォーム出力」。今私は~~思う~~ #3のために、x86に設定して実験する必要があります.
x86 に戻してから、接続文字列で「12」と「14」を試してみてください。
編集 - - - - - - - - -
インターネットからファイルを取得しました。
http://old.cba.ua.edu/~jomason/ac289/289AccessFiles.htmlの Oren.accdb
そして、これを自分のマシンでコーディングしました。そして、それは機能します。
private void button1_Click(object sender, EventArgs e)
{
try
{
using (OleDbConnection connect = new OleDbConnection())
{
connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\folder1\data\Oren.accdb;Persist Security Info=False;";
connect.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connect;
cmd.CommandText = "Select * from Agreement";
StringBuilder sb = new StringBuilder();
IDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
sb.Append(string.Format("{0}, {1}", reader[0].ToString(), reader[1].ToString()) + System.Environment.NewLine);
}
reader.Close();
ReportMessage(sb.ToString());
}
}
catch (System.Data.OleDb.OleDbException lolex)
{
ReportException(lolex);
}
catch (Exception ex)
{
ReportException(ex);
}
}
private void ReportException(Exception ex)
{
txtStatus.Text = ex.Message;
}
private void ReportException(System.Data.OleDb.OleDbException oleex)
{
StringBuilder sb = new StringBuilder();
sb.Append(oleex.ErrorCode + System.Environment.NewLine);
sb.Append(oleex.Message + System.Environment.NewLine );
txtStatus.Text = sb.ToString();
}
private void ReportMessage(string msg)
{
txtStatus.Text = msg;
}
編集
プログラム「Microsoft Access」でファイル「storekeeper.accdb」を開くことができますか。パスワードで保護されていませんか?