Как исправить ошибку «UpdateCommand затронул 0 из 1 ожидаемых записей.»? - PullRequest
0 голосов
/ 01 декабря 2018

Используется:
- MSAccess 2016.
- Автоинкремент "ID" формируется в таблице базы данных.
- DevExpress.
- gridControl.

После добавления новой записи в «gridControl1» мне нужно добавить «ID» из базы данных.

Сценарий_1:
- Пользователь.Заполняет обязательные поля;- Пользователь.Смещает фокус на «gridControl1»;
- Программа.Добавляет новую запись в «gridControl1» - «Record_1»;
- Программа.Используя событие Row_Changed, мы добавляем запись «Record_1» в «базу данных»;
- Программа.Получить идентификатор «Запись_1» из базы данных;
- Программа.Обновляет идентификатор в «DataTable» для новой записи «Record_1»;

После выполнения сценария «Сценарий_1» пользователь пытается обновить любое поле новой записи.
Сценарий_2:
- Пользователь.Изменяет поле ввода «Запись_1»;
- Пользователь.Смещает фокус на другую запись;
- Программа.Выдает ошибку «UpdateCommand затронул 0 из 1 ожидаемых записей.»;

Как исправить ошибку «UpdateCommand затронул 0 из 1 ожидаемых записей.»?

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
     {

     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...