Creo que es probable que lo que ocurra es que tu tabla ya está editando o insertando algún registro, y al llamar a append, el motor primero hace un post sobre el registro actual.
Creo que podes verificarlo facilmente haciendo:
Código:
if Comparativo.DataSource1.DataSet.State in dsEditModes Then
Begin
ShowMessage('Se esta editando el registro');
try
Comparativo.DataSource1.DataSet.Post;
except
ShowMessage('Si es aqui donde peta!');
raise;
end;
End;
No es una solucion, pero te ilustrará el problema.
Hasta luego.