У меня есть приложение Delphi с TIBQUery-TDataSetProvider-TClientDataSet, которое более или менее эмулирует шаблон CachedUpdates (который был в предыдущих компонентах BDE).В настоящее время нет кода обработки ошибок, поэтому сообщений об ошибках нет вообще.Я просто хочу включить следующий сценарий: когда в запросе возникает какая-либо ошибка, поступающая из базы данных, тогда все цепочки должны остановить работу, остаться на текущих значениях, откатить уже опубликованные изменения и показать сообщение.Я предполагаю - все это может быть сделано путем реализации TDataSetProvider.OnUpdateError.У меня есть 2 предложения кода.Первый:
procedure TBillDM.BillProvUpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
var Response: TResolverResponse);
begin
inherited;
raise E;
end;
Другой вариант:
procedure TBillDM.BillProvUpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
var Response: TResolverResponse);
begin
inherited;
Response:=rrAbort;
BillQry.Transaction.RollbackRetaining;
ShowMessage(E.Message);
end;
Являются ли эти шаблоны кода вполне нормальными?Каковы рекомендации для OnUpdateError
, если вы просто хотите остановить выполнение и сообщить об ошибке?Я хочу, чтобы в приложении не было никакого интеллекта - я могу только предоставить более значимое сообщение об ошибке, но все исправления должны быть сделаны пользователем.