Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Deleted row information cannot be accessed


Автор: Vyacheslav 17.3.2006, 17:39
При попытке проичтать инфрормацию из удаленной строки, выдается гененерится исключение с сообщением "Deleted row information cannot be accessed through the row." Если возможность прочитатать информацию из строки. Стоит проблема синхронизации двух DataSet

Автор: mr.DUDA 17.3.2006, 18:06
Цитата(Vyacheslav @ 17.3.2006, 16:39 Найти цитируемый пост)
При попытке проичтать инфрормацию из удаленной строки, выдается гененерится исключение с сообщением "Deleted row information cannot be accessed through the row." Если возможность прочитатать информацию из строки. Стоит проблема синхронизации двух DataSet

Выполнив DataSet.RejectChanges(), можно вернуть DataRow к жизни.

Автор: Vyacheslav 17.3.2006, 18:43
Я так и сделал smile, ну уж очень уродливо смотрится. К тому же мне потом для того, чтобы клиент продолжил редактирование с того состояния, в котором произошла синхронизация опять нужно эту запись удалить после прочтения ключа. Для удаленной записи он то мне только и нужен.

Автор: mr.DUDA 17.3.2006, 18:51
Цитата(Vyacheslav @ 17.3.2006, 17:43 Найти цитируемый пост)
Я так и сделал , ну уж очень уродливо смотрится. К тому же мне потом для того, чтобы клиент продолжил редактирование с того состояния, в котором произошла синхронизация опять нужно эту запись удалить после прочтения ключа. Для удаленной записи он то мне только и нужен.

Вопрос, зачём синхронизировать два датасета ? Обычно синхронизируют датасет и БД, датаадаптер анализирует состояние каждой DataRow и выполняет удаление, модификацию или вставку записи в базу данных.

Автор: Vyacheslav 17.3.2006, 19:32
Я же не спрашиваю - "зачем", я спрашиваю - "как".
Дизайн делал не я, а специалисты. Я - кодер. Они решили так, я беру под козырек.
Задача весьма тривиальная. Нужно то всего, прочитать поле удаленной записи. Ладно хранение значений было не предусмотрено, так ведь нет - хранится

PS. Все больше убеждаюсь, что несмотря на весьма добротный язык, сам фреймворк реализован бестолково. Такое ощущение, что разработчики просто обалдели от возможностей и в результате сделали все весьма коряво.

Автор: Дрон 17.3.2006, 20:26
Цитата(Vyacheslav @ 17.3.2006, 17:39 Найти цитируемый пост)
При попытке проичтать инфрормацию из удаленной строки, выдается гененерится исключение с сообщением "Deleted row information cannot be accessed through the row." Если возможность прочитатать информацию из строки. Стоит проблема синхронизации двух DataSet

Легко! smile

Код

row["SomeField", DataRowVersion.Original]

Добавлено @ 20:31
Цитата(Vyacheslav @ 17.3.2006, 19:32 Найти цитируемый пост)
Все больше убеждаюсь, что несмотря на весьма добротный язык, сам фреймворк реализован бестолково. Такое ощущение, что разработчики просто обалдели от возможностей и в результате сделали все весьма коряво.

Зря ты так. Ты ведь профессионал. И в фрэймворке есть гораздо более любопытные грабли, чем эти. А если тебя уже такая мелочь расстраивает, то что ж ты дальше скажешь?...

Автор: mr.DUDA 17.3.2006, 21:45
Цитата(Vyacheslav @ 17.3.2006, 18:32 Найти цитируемый пост)
Я же не спрашиваю - "зачем", я спрашиваю - "как".
Дизайн делал не я, а специалисты. Я - кодер. Они решили так, я беру под козырек.

Ну раз так, то конечно, нужно подстраиваться под индусский дизайн... smile

Частное решение любой задачи найдётся всегда. В данном конкретном случае Дрон его нашёл и привёл, за что ему респект. А я лишь задал наводящий вопрос, который предполагал, что данная задача ещё не окончательно решена, и есть возможность решить её не на частном, а на общем уровне.

Автор: IGV 25.11.2010, 16:08
Код

If the DataRow.Delete method is called, the row transitions such that its RowState is DataRowState.Deleted. (It is only acutally removed from the DataTable when AcceptChanges is called.) 

When a row is in DataRowState.Deleted, the normal means for accessing the values do not work (as you have seen).  If all you need to know is that the row is deleted, check the RowState property.  If you need to retrieve the "original", deleted data, you can use an overload of he Item property.  For example, if dr is your row, dr("MyColumnName", DataRowVersion.Original) returns the old value.  (Similarly, dr.IsNull("MyColumnName", DataRowVersion.Original) can be used to check the original data for null).


http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/d012dc3a-5cb2-4fdc-8aaf-08c69d2ffa0b

Автор: Любитель 28.11.2010, 17:47
Зачем поднимать тему четырёхлетней (!) давности?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)