المعلومات المطلوبة على tdatasetprovider في دلفي

StackOverflow https://stackoverflow.com/questions/421934

  •  05-07-2019
  •  | 
  •  

سؤال

لدي مشروع Midas الذي يستخدم tdatasetprovider في واحد من Remotedatamodules في الخادم

حاليا أنا أستفيد من الأحداث التالية

  • Be ForeApplyupdates - لإنشاء كائن
  • قبل updaterecord - لاستخدام الكائن
  • بعد applyupdates - لقدر الكائن

سؤال:

هل سيتم دائمًا استدعاء "بعد applyupdates" حتى لو كان خطأ في التحديث؟

هل كانت مفيدة؟

المحلول

إذا نظرت إلى رمز المصدر:

function TCustomProvider.DoApplyUpdates(const Delta: OleVariant; MaxErrors: Integer;
  out ErrorCount: Integer; var OwnerData: OleVariant): OleVariant;
begin
  SetActiveUpdateException(nil);
  try
    try
      if Assigned(FOnValidate) then
        FOnValidate(Delta);
      DoBeforeApplyUpdates(OwnerData);
      Self.OwnerData := OwnerData;
      try
        Result := InternalApplyUpdates(Delta, MaxErrors, ErrorCount);
      finally
        OwnerData := Self.OwnerData;
        Self.OwnerData := unassigned;
      end;
    except
      on E: Exception do
      begin
        SetActiveUpdateException(E);
        raise;
      end;
    end;
  finally
    try
      DoAfterApplyUpdates(OwnerData);
    finally
      SetActiveUpdateException(nil);
    end;
  end;
end;

Yoy ترى أن doafterapplyupdates تسمى في الكتلة أخيرًا. هذا يعني أنه يسمى دائمًا احترام أي استثناء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top