Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > сохранение изменений в DBGrid/DBGridEh


Автор: dalien 30.7.2009, 10:36
Добрый день всем. Помогите мне разобраться с DBGrid/DBGridEh.
http://pic.ipicture.ru/uploads/090730/BUGh1CWd8O.jpg
НА форме лежат 2 DBGrid,в первом отображается инфа по сопроводительным письмам(DBGrid заполняется через ADOQuery). Если мы нажимаем кнопкой мыши на любую строку во втором DBGrid'е отображается информация о документах,которые прикреплены к сопроводительному письму. На картинке выбрана запись с номером письма 185/09205, а к этому письму прилагается договор и спецификация.Соответственно, изменяя набор данных 1 грида, изменяются записи во 2 гриде.

при двойном клике мыши на записи,я перевожу ее в режим редактирования
Код

procedure TForm8.DBGridEh2DblClick(Sender: TObject);
begin
     DBGridEh2.Options:=dbgrideh2.Options-[dgRowSelect];
     DBGridEh2.Options:=dbgrideh2.Options+[dgEditing];
end;

есть процедура UpdateDocCover которая записывает изменения DBGrid'а
Код

procedure TForm8.UpdateDocCover();
var q:String;
begin
        DM.UpdateDocCover.Active:=false;
        DM.UpdateDocCover.Close;
        DM.UpdateDocCover.SQL.Clear;
        q:='update doc_cover set doc_cover.doc_cov=:name where doc_cover.id_doc_cover=:par1';
        DM.UpdateDocCover.SQL.text:=q;     DM.UpdateDocCover.Parameters.ParamByName('par1').Value:=DBGridEh2.Columns[0].Field.asString;
        DM.UpdateDocCover.Parameters.ParamByName('name').Value:=DBGridEh2.Columns[1].Field.asString;
        DM.UpdateDocCover.ExecSQL;
        DM.UpdateDocCover.Active:=false;
        DM.UpdateDocCover.Close;

        DM.DSDocCover.DataSet.Active:=false;
        DM.DSDocCover.DataSet.Close;//:=true;
        DM.DSDocCover.DataSet.Open;//:=true;
        DM.DSDocCover.DataSet.Active:=true;
        showmessage('данные изменены и сохранены');
end;


Теперь самое главное, как организовать эти изменения после того,как пользователь внес изменения в поле(ячейку) и нажал на клавишу Enter или перешел на другую запись и при этом выскакивало сообщение о том,что данные будут изменены.
Если я перехожу на другую запись, то измененные данные сохраняются,но надо вывести сообщение,что данные будут изменены.
Как лучше это сделать, обработку каких событий выполнять.
С уважением,dalien.


Автор: former 30.7.2009, 14:07
Написать процедуру или функцию (что будет удобнее) обработчика (вывод сообщения и отмена/подтверждение изменений). В событиях грида OnEnter и OnSelectionChanged вызывать этот обработчик. Возможно, что и в некоторых других событиях тоже.

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