代码之家  ›  专栏  ›  技术社区  ›  climivin

如何修复错误“UpdateCommand已影响1个预期项中的0个。”?

  •  0
  • climivin  · 技术社区  · 6 年前

    使用人:
    -2016年MSAccess。

    -开发快车。
    -网格控件。

    向“gridControl1”添加新条目后,需要从数据库中添加“ID”。

    方案1:
    -用户。填写所需字段; -用户。将焦点转移到“gridControl1”;
    -程序。向“gridControl1”添加一个新条目-“Record_1”;
    Row_Changed 事件,我们将“Record_1”项添加到“database”;

    -程序。为新条目“Record_1”更新“DataTable”中的ID;

    执行脚本“Scenario_1”后,用户尝试更新新记录的任何字段。

    -用户。更改输入字段“记录1”;

    -程序。产生错误“UpdateCommand已影响1个预期项中的0个。”;

    如何修复错误“UpdateCommand已影响1个预期项中的0个。”?

    enter image description here enter image description here enter image description here enter image description here

    补充
    enter image description here

       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
         {
    
         }
    }
    
    0 回复  |  直到 6 年前