使用者:
-MSAccess2016。
-在数据库表中形成自动递增的“ ID”。
-DevExpress。
-gridControl。
将新条目添加到“ gridControl1”后,需要从数据库添加“ ID”。
场景_1:
-用户。填写必填字段;
-用户。将焦点转移到“ gridControl1”;
- 该程序。将新条目添加到“ gridControl1”-“ Record_1”;
- 该程序。使用Row_Changed
事件,我们将条目“ Record_1”添加到“数据库”中;
- 该程序。从数据库中获取ID“ Record_1”;
- 该程序。为新条目“ Record_1”更新“ DataTable”中的ID;
执行脚本“ Scenario_1”后,用户尝试更新新记录的任何字段。
方案_2:
-用户。更改输入字段“ Record_1”;
-用户。将焦点转移到另一个条目;
- 该程序。产生错误“ UpdateCommand已影响1个预期条目中的0个。”
如何解决错误“ UpdateCommand已影响1个预期条目中的0个。”
public void connect()
{
string catBD = @"z:\vs\csharp\prb\718\01_pr\01_pr\01_pr\718.01.01.accdb";
string conBD = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);
connection = new OleDbConnection(conBD);
connection.Open();
string query1 = "SELECT * FROM TableGrid_00";
OleDbCommand cmd1 = new OleDbCommand(query1, connection);
dt = new DataTable();
try
{
adapter = new OleDbDataAdapter(cmd1);
cmdBuilder = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand();
adapter.InsertCommand = cmdBuilder.GetInsertCommand();
}
catch (Exception ex)
{
string s = ex.Message;
throw;
}
adapter.Fill(dt);
dt.RowChanged += new DataRowChangeEventHandler(Row_Changed);
}
private void Row_Changed(object sender, DataRowChangeEventArgs e)
{
adapter.Update(dt);
string SearchByColumn = "ID is null";
DataRow[] hasRows = dt.Select(SearchByColumn);
if (hasRows.Length != 0)
{
string query = "SELECT MAX(ID) FROM TableGrid_00";
OleDbCommand com;
OleDbDataReader dataReader;
com = new OleDbCommand(query, connection);
dataReader = com.ExecuteReader();
dataReader.Read();
int resultQuery = dataReader.GetInt32(0);
hasRows[0]["ID"] = resultQuery;
dataReader.Close();
}
else
{
}
}