ClientDataSet - quais registros foram alterados

Top  Previous  Next

 

//como saber os registros alterados no clientdataset

 

//no evento calcfields insira o seguint codigo

if Temp.UpdateStatus = usModified then

    Temp.FieldByName('status').AsString := 'S'  //campo calculado  

 

{possiveis UpdateStatus

(usUnmodified, usModified, usInserted, usDeleted)}

 

 

{obs.: se os registro foram inseridos via codigo e nao pelo provider voce deve

limpar o log do clientdataset (temp.mergeChangeLog) senao o update status sera

usInserted. 

 

 

 

Voce pode usar o statusfilter para mostrar somente os deletados, inseridos e modificados

}

Temp.StatusFilter := [usModified, usInserted, usDeleted];

 

//no calcfields

if Temp.UpdateStatus = usModified then

    Temp.FieldByName('status').AsString := 'M'  //campo calculado

if Temp.UpdateStatus = usInserted then

    Temp.FieldByName('status').AsString := 'I'  //campo calculado

if Temp.UpdateStatus = usDeleted then

    Temp.FieldByName('status').AsString := 'D'  //campo calculado

 

{obs: quando usando os statusfilter os registros que foram modificados podem ficar 

com a flag = ''. Pode ser um Bug do clientdataset}