Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > ADOQuery1.Post отмена редактирования


Автор: admus 21.10.2013, 23:21
Подскажите пожалуйста.
После открывания формы для редактирования записи,
пользователь нажимает ОК, но редактирование не делает.
Команда стоит ADOQuery1.Post
Как быть?
Выпадпает ошика....

Автор: Данкинг 22.10.2013, 00:47
Как понять "редактирование не делает"? Если есть .Post - то сначала должен быть и .Edit. А так, в общем случае - ну, можно просто ошибку отлавливать.

Автор: admus 22.10.2013, 08:49
Цитата(Данкинг @ 22.10.2013,  00:47)
Как понять "редактирование не делает"? Если есть .Post - то сначала должен быть и .Edit. А так, в общем случае - ну, можно просто ошибку отлавливать.

После открытия формы для редактирования записи открываются поля для редактирования базы. После этого пользователь нажимает ОК (ADOQuery1.Post). Есть кнопка Отмена (Close). 
Проблема с ошибкой возникает, когда пользователь открыл это окно и не стал в этой форме ни чего редактировать. При этом же нажимает ОК, подтверждения записи. 
Короче, редактирование в записи (DBEdit1) не произошло, а Post случайно нажимается. Вылетает при этом ошибка.

Автор: superVad 22.10.2013, 17:46
admus, проверяй состояние набора данных перед постом.

Автор: БелАмор 22.10.2013, 20:13
Цитата(admus @  22.10.2013,  00:21 Найти цитируемый пост)
Команда стоит ADOQuery1.Post
Как быть?
Выпадпает ошика....

Точно такой-же вопрос:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=77422
Смотрите там приведённые мной ссылки.

По поводу кнопок и закрытия формы:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=61703

Пример обработки закрытия формы отсюда:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=80530

Код

procedure TRecEditForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if ModalResult = mrOk then
  try
    FDataSet.Post;
    if FDataSet is TBDEDataSet then
      TBDEDataSet(FDataSet).FlushBuffers;
  except
    ShowMessage('Ошибка при сохранении');
    Action := caNone;
  end
  else
    FDataSet.Cancel;
end;


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