и еще вопросик по добавлению/удалению строк в DataSet и базе

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

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

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

и еще вопросик по добавлению/удалению строк в DataSet и базе

Сообщение Loiste » 28.10.2005 (Пт) 9:56

Помогите еще разочек, пожалуйста..запуталась совсем..

Добавляю строку в таблицу Вопросы в DataSet11:

Код: Выделить всё
Dim cRow As DataRow
cRow = DataSet11.Вопросы.NewRow()
cRow.BeginEdit()
cRow("Вопрос") = AddNode.Text
cRow("КодТемы") = AddNode.Parent.Tag
cRow.EndEdit()
DataSet11.Вопросы.Rows.Add(cRow)
OleDbDataAdapter1.Update(DataSet11, "Вопросы")

Пробую удалить строку из таблицы Вопросы из DataSet11:

Код: Выделить всё
DataSet11.Вопросы.Rows(R).Delete()  'R - номер удаляемой строки
OleDbDataAdapter1.Update(DataSet11, "Вопросы")


Проблема в том, что если я пробую удалить строку, которая была добавлена при прошлом запуске приложения - все получается.
Если я добавляю строку при текущем запуске приложения и тут же пытаюсь ее удалить на строке OleDbDataAdapter1.Update(DataSet11, "Вопросы") отладчик выдает ошибку

An unhandled exception of type 'System.Data.DBConcurrencyException' occurred in system.data.dll

Additional information: Concurrency violation: the DeleteCommand affected 0 records.


Опять же, если я ту же самую строку пробую удалить при следующем запуске приложения она нормально удаляется..

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 28.10.2005 (Пт) 11:04

Всё правильно, её же нет в базе.
Если нужно удалить ряд из ТОЛЬКО из датасета используй Remove.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 28.10.2005 (Пт) 11:20

Нет, мне нужно, чтобы при удалении строка удалялась из DataSet11 и из базы..
А если использовать Remove я не смогу потом обновить базу с помощью адаптера, верно?

Подразумевается, что приложение будет сетевым и работать с базой будут одновременно несколько пользователей.
Но, может быть, вы все же посоветуете обновлять базу данных при завершении приложения?

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 28.10.2005 (Пт) 14:19

Странный он какой-то, этот отладчик. То все работает и все нормально удаляется, а то ошибку вдруг выдает.. :shock: Хотя я ничего не меняла. Код одинаковый.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 28.10.2005 (Пт) 14:31

на обнови датасет после апдейта и будет тебе счастье, а лучше книгу про адо купи и разберись как она(оно?) работает
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

AlexM
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 25.06.2002 (Вт) 11:26
Откуда: Украина, Житомир

Сообщение AlexM » 31.10.2005 (Пн) 10:02

Ваш код:
Dim cRow As DataRow
cRow = DataSet11.Вопросы.NewRow()
cRow.BeginEdit()
cRow("Вопрос") = AddNode.Text
cRow("КодТемы") = AddNode.Parent.Tag
cRow.EndEdit()
DataSet11.Вопросы.Rows.Add(cRow)
OleDbDataAdapter1.Update(DataSet11, "Вопросы")

Попробуйте после обновления БД очистить dataSet и заново его заполнить методом Fill.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 31.10.2005 (Пн) 10:44

или просто использовать проверку на наличие изменений

HasChanges

Если Ложь, то нефиг и обновлять.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru


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

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

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

    TopList