if (n != true)
{
cmd = new OleDbCommand("select max(Angebotsnummer) from tbl_Angebote", con);
neue_nr = Convert.ToInt32(cmd.ExecuteScalar()) + 1;
cmd = new OleDbCommand("insert into tbl_Angebote values(@nr,@knr, @date, @bet)", con);
}
else
{
neue_nr = Convert.ToInt32(txtAngebotsnummer.Text);
cmd = new OleDbCommand("update tbl_Angebote set Kundennummer=@knr, Erstellungsdatum=@date, Betreff=@bet where Angebotsnummer=@nr", con);
}
cmd.Parameters.Add("@nr", OleDbType.Char, 10);
cmd.Parameters["@nr"].Value = neue_nr;
cmd.Parameters.Add("@knr", OleDbType.Char, 50);
cmd.Parameters["@knr"].Value = Convert.ToString(txtKnr.Text);
cmd.Parameters.Add("@date", OleDbType.Date, 50);
cmd.Parameters["@date"].Value = Convert.ToDateTime(txtDatum.Text);
cmd.Parameters.Add("@bet", OleDbType.Char, 255);
cmd.Parameters["@bet"].Value = Convert.ToString(txtBetreff.Text);
cmd.ExecuteNonQuery();
con.Close();
插入命令正在运行,更新命令不是......
如果我在Access中输入相同的命令,则可以正常工作。
它有什么问题?
由于
答案 0 :(得分:2)
OleDbCommand
实际上并未采用命名参数。因此,参数在查询中出现的顺序需要与将参数添加到命令的顺序相同。
因此,在您的情况下,对于update命令,最后一个参数@bet
的值正用于where子句。尝试重新排序查询中的参数,使它们在两个查询中都匹配,这样您就不必复制添加参数的代码。
答案 1 :(得分:0)
在SQL中运行更新并检查它是否正在更新?
update tbl_Angebote set Kundennummer='@knr', Erstellungsdatum='@date',
Betreff='@bet' where Angebotsnummer='value of @nr'
如果工作正常并更新表格,请检查参数@nr。
的数据类型和长度