DataGridView から Access テーブルを更新する際に問題が発生しています。私を混乱させているのは、次のコードが1つのテーブルで機能し、別のテーブルでは機能しないことですが、どちらもまったく同じ構造を持っています。
テーブル
複数の(同一の)フィールドを持つ2つのテーブルがあり、主キーは "Number" と呼ばれるフィールドです。このフィールドは自動インクリメントであり、両方のテーブルで重複することなくインデックスが作成されます。そのため、同時実行違反の原因として主キーの欠如について読みましたが、ここでは問題ではないようです。
コード
これが私のコードの関連部分です。
初期化
BindingSource BS = new BindingSource();
DbDataAdapter adapter;
DataTable table = new DataTable();
OdbcCommand command = new OdbcCommand(query, odbcConnection);
OdbcDataAdapter adapter = new OdbcDataAdapter(command);
adapter.AcceptChangesDuringUpdate = true; // Attempt to fix the issue
adapter.AcceptChangesDuringFill = true; // same
DbCommandBuilder commandBuilder = new OdbcCommandBuilder(adapter);
dgv.DataSource = BS;
BS.DataSource = table;
adapter.Fill(table);
変更を保存する
OdbcCommandBuilder builder = new OdbcCommandBuilder((OdbcDataAdapter)adapter);
adapter.UpdateCommand = builder.GetUpdateCommand(); // Fix attempt
adapter.Update(table); // Where the exception is thrown
私の問題は、使用するデータベースに応じて非常にランダムに発生することを考えると、データベースに関連していると思いますが、それらは同じ構造であり、両方とも使用されていない (ローカル ドライブにコピーされている) ため、何が起こっているのかわかりません。