.OldValue x .NewValue

Delphi

03/02/2004

Estou desenvolvendo um programa com datasnap e, através do evento ´BeforeUpdateRecord´ do DataSetProvider, quero montar um arquivo de log.

Eu não sei como identificar quando um campo foi alterado, pois se tentar:

if DeltaDs.FieldByName(campos[i]).OldValue <> DeltaDs.FieldByName(campos[i]).NewValue

Não adianta, pois se o registro não foi alterado, o valor é zero e se eu limpei também é zero.

Como posso ter certeza que o valor do campo foi realmente alterado?

Aproveitando, para que serve o .CurValue?

Obrigado. :roll:


Ronaldo

Ronaldo

Curtidas 0

Respostas

Ronaldo

Ronaldo

03/02/2004

A quem interessar:

Uma forma de saber se o campo foi alterado, utilizando o .newvalue é
testando seu valor com a função ´VarIsClear´.

Bastaria apenas fazer
if (not VarIsClear(DeltaDs.Fields[i].NewValue) then
writeln(F, (DeltaDs.Fields[i].FieldName + ´:´ + (DeltaDs.Fields[i].Oldvalue + ´ para ´ + (DeltaDs.Fields[i].NewValue );

O VarIsClear é diferente de VarIsNull. O primeiro diz que a variant nunca recebeu um valor, enquanto a segunda diz que a variável já recebeu um valor mas no momento é null.
:wink:


GOSTEI 0
POSTAR