2009-01-07 75 views
2

上的TDataSetProvider所需的信息我有一個服務器在Delphi

目前我正在使用下列事件

  • BeforeApplyUpdates在使用一個TDataSetProvider在RemoteDataModules之一邁達斯項目 - 創建一個對象
  • BeforeUpdateRecord - 使用對象
  • AfterApplyUpdates - 到destory對象

問題:

即使是更新錯誤,總是會調用'AfterApplyUpdates'嗎?

+0

使用源盧克! ;) – 2009-01-08 12:13:54

回答

11

如果你看看源代碼:

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; 

同比看到DoAfterApplyUpdates被稱爲在finally塊。這意味着它總是被稱爲任何例外情況。