Ошибка при обновлении таблицы БД - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Подскажите пожалуйста в чем проблема. Вношу новую запись в таблицу пытаюсь обновить и вылезает ошибка "Concurrency violation: the UpdateCommand affected 0 of the expected 1 records". Это только если вносить изменения в новую строку. Если вносить изменения в имеющееся строки то обновляет без проблем. Вот код добавления записи программно (при добавлении вручную тоже самое)
private void каталогПродукцииToolStripMenuItem_Click(object sender, EventArgs e)
        {
//Вызов формы пополнения каталога продукции
            Form6 Products = new Form6();
            if (Products.ShowDialog() == DialogResult.OK)
            {
                this.naimenovanie = Products.naimenovanie;
                this.productNumber = Products.productNumber;
                string[] PrNames = naimenovanie.Split('/');
                string[] PrNumbers = productNumber.Split('/');
                for (int i = 0; i <  3; i++)
                {
 
                    if (dataGridView1.Rows.Count < 3)
                    {
                        katalogPlanDataSet.Table_1.Rows.Add();
                    }
                    dataGridView1.Rows[i].Cells[0].Value = System.Convert.ToInt32(PrNumbers[i]);
                    dataGridView1.Rows[i].Cells[1].Value = PrNames[i];
                }
 
            }
 
        }
Кнопка обновления
table_1TableAdapter.Update(this.katalogPlanDataSet.Table_1);
А вот UpdateCommand
UPDATE       Table_1
SET                [Наименование продукции] = @value1, Производительность = @value2, Спрос = @value3
WHERE        ([Номер продукта] = @ProductNumber)
До этого по такой же схеме все работало вроде. Помогите пожалуйста.
Есть подозрение что это из-за того, что строка, которую я хочу заполнить создана программно. Теперь не знаю что с ней сделать. Как удалить можно.

Решение задачи: «Ошибка при обновлении таблицы БД»

textual
Листинг программы
//Вызов формы пополнения каталога продукции
            Form6 Products = new Form6();
            if (Products.ShowDialog() == DialogResult.OK)
            {
                this.naimenovanie = Products.naimenovanie;
                this.productNumber = Products.productNumber;
                string[] PrNames = naimenovanie.Split('/');
                string[] PrNumbers = productNumber.Split('/');
                for (int i = 0; i <  5; i++)
                {
                    if (dataGridView1.Rows.Count < 5)
                    {
                        katalogPlanDataSet8.Table_5.Rows.Add();
                    }
                    
                    katalogPlanDataSet8.Table_5.BeginInit();
                    dataGridView1.Rows[i].Cells[0].Value = System.Convert.ToInt32(PrNumbers[i]);
                    dataGridView1.Rows[i].Cells[1].Value = PrNames[i];
                    
                }
                katalogPlanDataSet8.Table_5.EndInit();
                table_5TableAdapter.Update(katalogPlanDataSet8.Table_5);
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы