Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Как определить, что данные в Dataset были изменены


Автор: vlsaf 21.11.2007, 18:21
Подскажите, как лучше поступают в сл. случае:

Юзер что-то делал в программе, потом пошел покурить, а когда пришел за комп, то закрыл прогу.
Мне надо как-то определить, менял юзер данные, и если менял и не записался, то прога должна предложить перед выходом записать данные.

Вот собственно и вопрос. Как это лучше организовать.
Можно ли определить, изменились ли таблицы с момента последнего обновления или нет?
Может у Tabelleadapter или у Dataset есть свойства, за это отвечающие?

Кто сталкивался?

Автор: thomas 21.11.2007, 18:31
vlsaf, 
Цитата

Dataset есть свойства, за это отвечающие?

Да. Смотри в сторону DataRow.RowState
Если пользователь что-то поменял в таблицах датасета, то меняются соответствующие свойства
посмотри http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemdatadatarowclassrowstatetopic.asp

Добавлено через 3 минуты и 40 секунд
Я это использовал перед вызовом Update для ДатаСет. Сначала проверял состояние строк, если были внесены изменения(RowState.Modifed) и(или) добавлена новая строка(RowState.Added), то выполнялось обновление.

Добавлено через 4 минуты и 43 секунды
ЗЫ
Вечером вернусь из школы, поищу пример сода. Там не много пара строчек.
Успехов.

Автор: vlsaf 21.11.2007, 18:37
На худой конец и Row пойдет. Но это не очень красиво.

Если у меня в таблице 1000 строк, то для того, чтобы определить, не изменилась ли какая-то строка я должен в цикле перебрать все строки ? 

Все время пользоваться циклами???

Можно, конечно таким вот образом
Код
foreach (DataRow row in this.myDataSet.myTable) 
if (row.RowState != DataRowState.Unchanged) 
{
    MessageBox.Show("!!!");
    break;
}





Автор: 1stain 21.11.2007, 18:45
Код

        public bool NeedUpdate(DataSet ds)
        {
            DataSet _tempDS = ds.GetChanges(DataRowState.Modified);
            return _tempDS == null;
        }


з.ы. бывалый я только в статусе, а на самом деле я еще сам учусь smile
иначе сразу бы написал вариант
DataSet.HasChanges()

з.з.ы. MSDN рулит, как всегда

Автор: vlsaf 21.11.2007, 18:49
Ага. Это получше будет.

Спасибо бывалым людям smile
Вопрос снят !!!

Автор: thomas 22.11.2007, 00:25
1stain, 
 smile 
А слона то, я и не заметил.
Хотя ведь сам написал. 
Цитата

Цитата

Dataset есть свойства, за это отвечающие?

Да

И тут же сам увел в сторону.  smile 
Да, и на старуху бывает проруха.

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