Вызов метода Post
Код:
function TFormNewGTD.Execute(GTDDataSet: TDataSet): boolean;
begin
dsNewGTD.DataSet := GTDDataSet;
dsNewGTD.DataSet.Insert;
Result := ShowModal = mrOK;
if Result then
dsNewGTD.DataSet.Post
else
dsNewGTD.DataSet.Cancel;
end;
Его обработка:
Код:
procedure TFormMain.GTDBeforePost(DataSet: TDataSet);
begin
if DataSet.FieldByName('Registration Number').IsNull or
DataSet.FieldByName('Date').IsNull then
begin
MessageDlg('Для создания ГТД оба поля должны быть заполнены.', mtError,
[mbOk], 0);
DataSet.Cancel;
end;
end;
Если ввести в пустую таблицу "пустую строку" (т.е. не заполнить поля) на строчке
DataSet.Cancel; возникает exception o.O будто я ничего не отменял и не "обрабатывал". Куда копать?
В целом предполагал вместо DataSet.Cancel делать Abort, но тогда становится вообще непонятно, как открыть эту же форму для исправления ошибок. Номера ГТД очень длинные, и меня проклянут

если я заставлю их вводить каждый раз, когда юзверь забудет ввести дату.
Тут где-то нужен цикл для ShowModal...
P.S. Ко всему прочему Abort это утечка памяти, ибо до метода Free (для модальной формы) компилятор просто не доберётся.