Delphi 3 и создание приложений баз данных


А) б)


Рис 33.5. а) до подтверждения изменений (UpdateAction = uaRetry), 6) после подтверждения изменений, открытия и закрытия НД "Товары" (UpdateAction = uaRetry)

Причина зависания проста: при UpdateAction = uaRetry происходит попытка заново подтвердить квитированные изменения для записи, на которой произошла ошибка; однако поскольку значение поля "Товар" не изменилось, повторная попытка вызовет ошибку, для которой назначено действие новой попытки подтверждения, и т.д.

Введем в обработчик события OnUpdateError для режима UpdateAction = uaRetry возврат к старому значению поля "Товар" для записей, на которых попытка подтверждения изменений вызывает ошибку:

procedure TForm1.TovaryUpdateError(DataSet: TDataSet;

E: EDatabaseError; UpdateKind: TUpdateKind;

var UpdateAction: TUpdateAction);

begin

CASE RadioGroup1.ItemIndex OF

0 : UpdateAction := uaFail;

1 : UpdateAction := uaAbort;

2 : UpdateAction := uaSkip;

3 : begin

Tovary.FieldByName('Tovar').NewValue :=Tovary.FieldByName('Tovar').OldValue;

UpdateAction := uaRetry;

end;

END;//case

end;

Тогда обработчик OnUpdateError будет действовать, как если бы было установлено UpdateAction = uaSkip (рис. ЗЗ.6.а) и б)).




Начало  Назад  Вперед



Книжный магазин