Доброго времени суток!
Есть следующая проблемка: требуется отредактировать содержимое базы данных через 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) редактирование приоисходит в режиме "реального времени", т.е., если пользователь ввел данные и нажал на кнопку "сохранить изменения", выбрал пункт "отмена", то отмена произойдет только для последней редактируемой ячейки, нельзя ли сделать так, чтобы отмена происходила для всех внесенных изменений?
Помогите, кто чем может....