Yo lo hago así, aunque no uso ADO.
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
begin
try
database1.starttransaction;
Cabecera.ApplyUpdates(0);
Detalle.ApplyUpdates(0);
database1.commit;
except
On E: Exception do
begin
ShowMessage('Error actualizando.' + chr(13) + E.Message);
database1.rollback;
end;
end;