Ошибка Concurrency violation: the DeleteCommand affected...

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

dedmakar
Обычный пользователь
Обычный пользователь
 
Сообщения: 71
Зарегистрирован: 08.02.2007 (Чт) 21:16

Ошибка Concurrency violation: the DeleteCommand affected...

Сообщение dedmakar » 28.01.2008 (Пн) 16:16

Как избавиться от этой ошибки:
"Concurrency violation: the DeleteCommand affected 0 of the expected 1 records."
БД берется из Access. Помещается на DataGridView с помощью DataSet и DataAdapter.

Код:
"
Код: Выделить всё
 
  Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\sclad.mdb;")
Dim da1 As New OleDb.OleDbDataAdapter("", conn)Dim ds1 As New DataSet()
'/////InsertCommand/////
myInsertCommand1 = conn.CreateCommand() myInsertCommand1.CommandText = "INSERT INTO product_data (ID, Название, Дата, Сумма, Количество, Цена, Осталось) VALUES (?, ?, ?, ?, ?, ?, ?)"
myInsertCommand1.Parameters.Add("@ID", OleDb.OleDbType.VarWChar, 50, "ID")myInsertCommand1.Parameters.Add("@Название", OleDb.OleDbType.VarWChar, 50, "Название")myInsertCommand1.Parameters.Add("@Дата", OleDb.OleDbType.Date, 50, "Дата")myInsertCommand1.Parameters.Add("@Сумма", OleDb.OleDbType.Double, 50, "Сумма")myInsertCommand1.Parameters.Add("@Количество", OleDb.OleDbType.Integer, 50, "Количество")myInsertCommand1.Parameters.Add("@Цена", OleDb.OleDbType.Double, 50, "Цена")myInsertCommand1.Parameters.Add("@Осталось", OleDb.OleDbType.VarWChar, 50, "Осталось")
da1.InsertCommand = myInsertCommand1
'/////UpdateCommand////
myUpdateCommand1 = conn.CreateCommand()myUpdateCommand1.CommandText = "UPDATE product_data SET Название = ?, Дата = ?, Сумма = ?, Количество = ?, Цена = ?, Осталось = ? WHERE (ID = ?)"
myUpdateCommand1.Parameters.Add("@Название", OleDb.OleDbType.VarWChar, 50, "Название")myUpdateCommand1.Parameters.Add("@Дата", OleDb.OleDbType.Date, 50, "Дата")myUpdateCommand1.Parameters.Add("@Сумма", OleDb.OleDbType.Double, 50, "Сумма")myUpdateCommand1.Parameters.Add("@Количество", OleDb.OleDbType.Integer, 50, "Количество")myUpdateCommand1.Parameters.Add("@Цена", OleDb.OleDbType.Double, 50, "Цена")myUpdateCommand1.Parameters.Add("@Осталось", OleDb.OleDbType.VarWChar, 50, "Осталось")myUpdateCommand1.Parameters.Add("@ID", OleDb.OleDbType.Integer, 50, "ID")da1.UpdateCommand = myUpdateCommand1
'/////DeleteCommand////
myDeleteCommand1 = conn.CreateCommand()myDeleteCommand1.CommandText = "DELETE FROM product_data WHERE (Название = ?) AND (Дата = ?) AND (Сумма = ?) AND (Количество = ?) AND (Цена = ?) AND (Осталось = ?) AND (ID = ?)"
myDeleteCommand1.Parameters.Add("@Название", OleDb.OleDbType.VarWChar, 50, "Название")myDeleteCommand1.Parameters.Add("@Дата", OleDb.OleDbType.Date, 50, "Дата")myDeleteCommand1.Parameters.Add("@Сумма", OleDb.OleDbType.Double, 50, "Сумма")myDeleteCommand1.Parameters.Add("@Количество", OleDb.OleDbType.Integer, 50, "Количество")myDeleteCommand1.Parameters.Add("@Цена", OleDb.OleDbType.Double, 50, "Цена")myDeleteCommand1.Parameters.Add("@Осталось", OleDb.OleDbType.VarWChar, 50, "Осталось")myDeleteCommand1.Parameters.Add("@ID", OleDb.OleDbType.Integer, 50, "ID")
da1.DeleteCommand = myDeleteCommand1
mySelectCommand1 = conn.CreateCommand()mySelectCommand1.CommandText = "SELECT * FROM product_data"
da1.SelectCommand = mySelectCommand1da1.Fill(ds1)DataGridView1.DataSource = ds1.Tables(0).DefaultView
'Когда делаю update. Ошибка
da1.Update(ds1)

Ошибка появляется когда хочу именно удалить.

Жду ответа. Спасибо

dedmakar
Обычный пользователь
Обычный пользователь
 
Сообщения: 71
Зарегистрирован: 08.02.2007 (Чт) 21:16

Сообщение dedmakar » 28.01.2008 (Пн) 20:52

В Access, таблица имеет ID, которое является счетчикам (Инкремент) и ключевым полем.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList