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

А) б)


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

• UpdateAction = uaAbort.

Как показано на рис.33.3.а) и б), в режиме uaAbort результаты кэшированных изменений полностью отменены:


Рис 33.3 а) до подтверждения изменений (Update Action =uaAbort), б) noc-ie подтверждения изменений, открытия и закрытия НД "Товары" (UpdateAclion = uaAbort)

UpdateAction = uaSkip.

Как показано на рис.34.а) и б), в режиме uaSkip результаты кэшированных изменений отменены частично:




Рис 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.а) и б)).




Рис 33.6 а) до подтверждения изменений (UpdateAction = uaRetry) с откатом ошибочных записей к старому значению, б) после подтверждения изменений, открытия и закрытия НД "Товары" (UpdateAction = uaRetry) с откатом

ошибочных записей к старому значению



Содержание раздела