Verificação OldValue e NewValue do ClienteDataSet
02/05/2017
0
Estou implementando uma função de log do meu sistema, onde utilizo o BeforeUpdateRecord do DataSetProvider para realizar o lançamento do log, só que estou com um problema quando se trata de alteração do registro (UpdateKind = ukModify), ao fazer a verificação dos campos alterados, eu só quero que lance no log somente o campo que realmente foi alterado, segue meu código:
//PERCORRENDO O DATASET VERIFICANDO TODOS OS CAMPOS QUE FORAM ALTERADOS E ADD A VARIAVEL - CamposAlterados while i <= DeltaDS.FieldCount - 1 do begin if ((Trim(VarToStr(DeltaDS.Fields[i].OldValue)) <> Trim(VarToStr(DeltaDS.Fields[i].NewValue)))) then self.CamposAlterados := self.CamposAlterados + ' - '+ DeltaDS.Fields[i].DisplayLabel +' : "' + VarToStr(DeltaDS.Fields[i].OldValue) + '" PARA: "' + VarToStr(DeltaDS.Fields[i].NewValue) +'"' + #13; Inc(i); end;
Só que quando eu não altero o campo, ele passa como se fosse alterado pois o meu OldValue contem os dados e o meu NewValue esta null desta forma, ele está diferente então por isso é feito o lançamento no log, alguém sabe como eu ajusto esta verificação ?
Messias Natal
Post mais votado
Mais Posts
11/05/2017
Emerson Nascimento
for i := 0 to DeltaDS.FieldCount - 1 do if (DeltaDS.Fields[i].OldValue <> null) and (DeltaDS.Fields[i].NewValue <> null) then if (DeltaDS.Fields[i].OldValue <> DeltaDS.Fields[i].NewValue) then begin self.CamposAlterados := self.CamposAlterados + ' - '+ DeltaDS.Fields[i].DisplayLabel +' : "' + VarToStr(DeltaDS.Fields[i].OldValue) + '" PARA: "' + VarToStr(DeltaDS.Fields[i].NewValue) +'"' + #13; end;
11/05/2017
Emerson Nascimento
for i := 0 to DeltaDS.FieldCount - 1 do if (DeltaDS.Fields[i].OldValue <> null) and (DeltaDS.Fields[i].NewValue <> null) then if (DeltaDS.Fields[i].OldValue <> DeltaDS.Fields[i].NewValue) then begin self.CamposAlterados := self.CamposAlterados + ' - '+ DeltaDS.Fields[i].DisplayLabel +' : "' + VarToStr(DeltaDS.Fields[i].OldValue) + '" PARA: "' + VarToStr(DeltaDS.Fields[i].NewValue) +'"' + #13; end;
11/05/2017
Emerson Nascimento
.for i := 0 to DeltaDS.FieldCount - 1 do . if (DeltaDS.Fields[i].OldValue <> null) and (DeltaDS.Fields[i].NewValue <> null) then . if (DeltaDS.Fields[i].OldValue <> DeltaDS.Fields[i].NewValue) then . begin . self.CamposAlterados := self.CamposAlterados + ' - '+ . DeltaDS.Fields[i].DisplayLabel +' : "' + VarToStr(DeltaDS.Fields[i].OldValue) + . '" PARA: "' + VarToStr(DeltaDS.Fields[i].NewValue) +'"' + #13; . end; .
11/05/2017
Emerson Nascimento
25/05/2017
Messias Natal
- ID : "1" PARA: ""
- CELULAR : "Não Informado" PARA: ""
- TELEFONE : "Não Informado" PARA: ""
- DATA_CADASTRO : "25/05/2017" PARA: ""
- ENDERECO : "Não Informado" PARA: ""
- STATUS : "1" PARA: ""
- FOTO : "Não Informado" PARA: ""
- DATA_NASCIMENTO : "25/05/2017" PARA: ""
- ID_EMPRESA : "1" PARA: ""
- NOME : "Messias" PARA: ""
- SOBRENOME : "Antonio Natal" PARA: ""
25/05/2017
Emerson Nascimento
10/02/2018
Messias Natal
try
if UpdateKind = ukInsert then
begin
self.i := 0;
self.CamposAlterados := 'INSERÇÃO DO REGISTRO' + #13;
// PERCORRENDO TODOS OS CAMPOS PARA GRAVAÇÃO NO LOG
while i <= DeltaDS.FieldCount - 1 do
begin
self.CamposAlterados := self.CamposAlterados + ' - '+ DeltaDS.Fields[i].DisplayLabel + ' : "' + VarToStr(DeltaDS.Fields[i].OldValue)+ '"' + #13;
Inc(i);
end;
TLog.Inserir('CLIENTE', TLog.getTipoLogINSERCAO, self.CamposAlterados );
end;
if UpdateKind = ukDelete then
begin
self.i := 0;
self.CamposAlterados := 'EXCLUSÃO DO REGISTRO' + #13;
// PERCORRENDO TODOS OS CAMPOS PARA GRAVAÇÃO NO LOG
while i <= DeltaDS.FieldCount - 1 do
begin
self.CamposAlterados := self.CamposAlterados + ' - '+ DeltaDS.Fields[i].DisplayLabel + ' : "' + VarToStr(DeltaDS.Fields[i].OldValue)+'"' + #13;
Inc(i);
end;
TLog.Inserir('CLIENTE', TLog.getTipoLogEXCLUSAO, self.CamposAlterados );
end;
finally
self.CamposAlterados := '';
self.ComplementoCampo := '';
end;
Clique aqui para fazer login e interagir na Comunidade :)