Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как избежать ошибки? Надо что-то обновить. Но вот что? 
V
    Опции темы
vlsaf
Дата 26.11.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



На вот этой строке 
Код

foreach (DataRow row in this.aWIASDataSet.KundenText)

выскакивает ошибка

Collection was modified; enumeration operation might not exetute

Я добавил запись в таблицу и теперь хочу пройтись по всем строкам, и посмотреть
в какой строке row.RowState == DataRowState.Added

а у меня exeption !

Как быть?

Это сообщение отредактировал(а) vlsaf - 26.11.2007, 13:38
PM   Вверх
thomas
Дата 26.11.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



vlsaf, 
привет.
А там не надо указывать Rows?
Код

foreach (DataRow row in this.aWIASDataSet.KundenText.Rows)


По поводу исключения, у меня выскакивало примерно такое же, когда я выполнял обновление в отдельном потоке.
Но ты вроде без потоков работаешь. И еще 
Проверь когда вызывается this.aWIASDataSet.AcceptChanges(). 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vlsaf
Дата 26.11.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Я записываю мою таблицу построчно. 
Сейчас я не работаю с целым Dataset
И поэтому this.aWIASDataSet.AcceptChanges() мне не нужен.

Одну строку записываю вот таким макаром
Код

this.kundenTextTableAdapter.Update(row);


а на следующей вылезает exeption 


ps 
с Rows та же фигня.
А что? Правельнее с Rows работать? Почему?

Это сообщение отредактировал(а) vlsaf - 26.11.2007, 13:51
PM   Вверх
thomas
Дата 26.11.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



vlsaf, 
Если я правильно понял, то это выглядит так?
Код

foreach (DataRow row in this.aWIASDataSet.KundenText)
{
     this.kundenTextTableAdapter.Update(row);
}

Типа обновил одну строку и выкинул исключение. Да?
Поставь точку останова и посмотри что стало с содержимым KundenText. Здается мне, что кол-во строк в таблице стало равным нулю.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vlsaf
Дата 26.11.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Извиняюсь за поднятую волну.


Перетрудился  smile 

Я неправильно оформил блок Filally при обработки ошибки.



thomas, 
У меня все же вышло ловить ошибки хранимок.
Построчное сохранение катит!!! smile 



Это сообщение отредактировал(а) vlsaf - 26.11.2007, 15:31
PM   Вверх
thomas
Дата 26.11.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



vlsaf, 
С успехом тебя.  smile 
Помечай вопрос как решённый.   smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vlsaf
Дата 26.11.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Все же ошибка выскакивает
Если row.RowState == DataRowState.Added ошибки нет
если row.RowState == DataRowState.Modified ошибки нет
а вот 
если row.RowState == DataRowState.Deleted происходит вышеописанная ошибка

видать по циклу пройтись дальше не может

а код такой
Код

foreach (DataRow row in this.aWIASDataSet.KundenText)
{
       if ((row.RowState == DataRowState.Added)
       || (row.RowState == DataRowState.Deleted)
       || (row.RowState == DataRowState.Modified))
{
      this.kundenTextTableAdapter.Update(row);
}



PM   Вверх
Experimenter
Дата 27.11.2007, 10:07 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 3
Всего: 17



vlsaf, распространенная ошибка, в foreach такое не прокатывает. Да и for использовать аккуратно надо
Код

for (int i = aWIASDataSet.KundenText.Rows.Count - 1; i >-1; i--)
{
       if ((aWIASDataSet.KundenText.Rows[i].RowState == DataRowState.Added)
       || (aWIASDataSet.KundenText.Rows[i].RowState == DataRowState.Deleted)
       || (aWIASDataSet.KundenText.Rows[i].RowState == DataRowState.Modified))
{
      this.kundenTextTableAdapter.Update(aWIASDataSet.KundenText.Rows[i]);
}


Добавлено через 42 секунды
Для удаления в цикл надо заходить с хвоста


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
vlsaf
Дата 27.11.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Experimenter, откуда ты все знаешь? smile  smile  smile 

Может еще один вопрос подскажешь.

У строки состояние такое
(aWIASDataSet.KundenText.Rows[i].RowState == DataRowState.Deleted)
Если я отлавливаю exeption при удалении строки

Код

                    try { this.kTextTableAdapter.Update(aWIASDataSet.KText.Rows[i]); }
                    catch (SqlException exception)
                    {
                        foreach (SqlError item in exception.Errors)
                        {
                            MessageBox.Show(item.Message, massage_save, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }


то как мне показать юзеру на какой строке это дело сработало?
row уже обнулено, и я не могу достать до нужного мне поля. А так хочется!!!

Хотелось бы иметь что-то типа этого
Код

row.Row["text", DataRowVersion.Original]


Но как?

Это сообщение отредактировал(а) vlsaf - 27.11.2007, 11:10
PM   Вверх
thomas
Дата 27.11.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Experimenter, 
Ценное замечание.
Примем к сведению.  smile 
Держи +1 в репу.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vlsaf
Дата 27.11.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Вопрос решен.

>то как мне показать юзеру на какой строке это дело сработало?
>row уже обнулено, и я не могу достать до нужного мне поля. А так хочется!!!

См топик http://forum.vingrad.ru/forum/topic-184056.html
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0993 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.