私が知る限り、Access データベースに情報を書き込む C# コードの次の 2 つのサンプルは、同じ出力を生成する必要があります。ただし、最初のものは機能し、2番目のものはエラーになります。
最初のコード:オートナンバー型の主キー フィールドがない場合、うまく機能します。ただし、どのフィールドも変わらない行を追加しようとするまでは。私は AUTONUMBER の一意の ID を持っている必要があります (不都合がないという明らかな理由により)
string vsql = string.Format("insert into Log values " +
"('{0}','{1}',{2},{3},'{4}',#{5}#,'{6}')",
comboBox1.Text,
comboBox2.Text,
int.Parse(textBox1.Text),
int.Parse(textBox1.Text),
textBox3.Text,
textBox2.Text,
addRemove
);
2 番目のコード:エラー メッセージを返します。
「追加情報: クエリ値の数と宛先フィールドが同じではありません。」
私が見る限り、どちらも同じ数のフィールドを持っています。それでも、どちらにも一意の AUTONUMBER ID フィールドがありません。これは、コードを自動番号付けフィールドに「挿入」または「挿入しない」ようにする方法がわからないため、追加できません。繰り返しますが、明らかにフィールドが必要です。どんな助けでも大歓迎です!フォームが新しいレコードを送信すると、自動番号フィールドが自動的に更新される限り、どちらのコードも受け入れられます。
string vsql = string.Format("INSERT INTO Log (" +
"Location, " +
"Drug, " +
"Quantity, " +
"Strength, " +
"Initials, " +
"'Date'," +
"add_Remove" +
") VALUES (" +
comboBox1.Text,
comboBox2.Text,
int.Parse(textBox1.Text),
int.Parse(textBox1.Text),
textBox3.Text,
textBox2.Text,
addRemove);