Показать сообщение отдельно
  #1  
Старый 13.09.2011, 11:10
Аватар для Shoni
Shoni Shoni вне форума
Прохожий
 
Регистрация: 02.09.2011
Адрес: Кострома
Сообщения: 45
Версия Delphi: 7
Репутация: 165
По умолчанию Редактирование таблицы

Доброго времени суток!

Есть следующая проблемка: требуется отредактировать содержимое базы данных через DBGrid, для этого пишу:

по кнопке "перейти в режим редактирования":
Код:
   DBGrid1.Options:=DBGrid1.Options-[dgRowSelect]+[dgEditing];
   DBGrid1.DataSource.DataSet.Edit;


по кнопке "сохранить изменения":
Код:
 t := MessageBox(0
    , PChar('Ñîõðàíèòü èçìåíåíèÿ äëÿ òåêóùåé çàïèñè?')
    , PChar('Âíèìàíèå!')
    , MB_YESNO + MB_ICONINFORMATION
    );
 case t of
    IDYES: begin
        fmChild1.DBGrid1.DataSource.DataSet.Post;
        fmChild1.DBGrid1.Options:=fmChild1.DBGrid1.Options-[dgEditing]+[dgRowSelect];
        ShowMessage('Èçìåíåíèÿ óñïåøíî ñîõðàíåíû!');
      end;
    IDNO: begin
        fmChild1.DBNavigator1.BtnClick(nbCancel);
      end;
  end;

Все вроде бы устраивает, кроме 2 пунктов:
1) если одно поле было выделено, но оставлено без изменений, либо очищено - может всплыть ошибка 'DataSource not in edit or insert mode'
2) редактирование приоисходит в режиме "реального времени", т.е., если пользователь ввел данные и нажал на кнопку "сохранить изменения", выбрал пункт "отмена", то отмена произойдет только для последней редактируемой ячейки, нельзя ли сделать так, чтобы отмена происходила для всех внесенных изменений?

Помогите, кто чем может....
__________________
Memento Mori(арти)
Ответить с цитированием