SHARE
TWEET

Untitled

a guest Oct 15th, 2019 82 in 2 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. procedure TDataSetProvider.DoBeforeUpdateRecord(PSourceDataSet: TDataSet; PDeltaDataSet: TCustomClientDataSet; PUpdateKind: TUpdateKind; var Applied: Boolean);
  2. var
  3.   KeyFieldValue: String;
  4.   KeyFieldName: String;
  5. begin
  6.   KeyFieldName := ObterCampoChave(PSourceDataSet);
  7.  
  8.   if PUpdateKind <> ukInsert then
  9.     KeyFieldValue := PDeltaDataSet.FieldByName(KeyFieldName).OldValue;
  10.  
  11.   case PUpdateKind of
  12.     ukModify: CSLog(Format(LOGLINE1,[Self.ClassName,'DoBeforeUpdateRecord',Self.Name,'O registro de ID = "' + KeyFieldValue + '" está prestes a ser alterado']),TSoapServerDataModule(Owner).RequestID);
  13.     { TODO -cArtigo : Se é uma inserção em um TDataSet filho, devemos preencher
  14.     o campo de ligação com o valor correspondente do dataset pai, desde que o
  15.     valor atual seja menor ou igual a zero, o que indica que houve uma inserção
  16.     conjunta pai + filhos  }
  17.     ukInsert: begin
  18.       CSLog(Format(LOGLINE1,[Self.ClassName,'DoBeforeUpdateRecord',Self.Name,'Um registro está prestes a ser inserido']),TSoapServerDataModule(Owner).RequestID);
  19.       if Assigned(PDeltaDataSet.DataSetField) then
  20.       begin
  21.         KeyFieldValue := ObterCampoChave(PDeltaDataSet.DataSetField.DataSet);
  22.         if PDeltaDataSet.FieldByName(KeyFieldValue).AsInteger <= 0 then
  23.         begin
  24.           CSLog(Format(LOGLINEN,[RetornaPontos(Self.ClassName,'DoBeforeUpdateRecord',Self.Name),'Este registro pertence a um DataSet de detalhe que foi inserido junto com seu mestre. ']),TSoapServerDataModule(Owner).RequestID);
  25.           PDeltaDataSet.FieldByName(KeyFieldValue).NewValue := PDeltaDataSet.DataSetField.DataSet.FieldByName(KeyFieldValue).NewValue;
  26.           CSLog(Format(LOGLINEN,[RetornaPontos(Self.ClassName,'DoBeforeUpdateRecord',Self.Name),'O campo de ligação (' + KeyFieldValue + ') da tabela de detalhe será preenchido com o valor do mesmo campo na tabela mestre, que é "' + IntToStr(PDeltaDataSet.DataSetField.DataSet.FieldByName(KeyFieldValue).NewValue) + '"']),TSoapServerDataModule(Owner).RequestID);
  27.         end;
  28.       end;
  29.     end;
  30.     ukDelete: CSLog(Format(LOGLINE1,[Self.ClassName,'DoBeforeUpdateRecord',Self.Name,'O registro de ID = "' + KeyFieldValue + '" está prestes a ser excluído']),TSoapServerDataModule(Owner).RequestID);
  31.   end;
  32.  
  33.   { Chama o método DoBeforeUpdateRecord original }
  34.   inherited;
  35. end;
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top