Por otro lado, no dices en qué línea tienes el error. Ese es el código que interesa. No creo que sea ninguna de las líneas que mencionas en tu post.
Supongo que es un poco mas tarde en el código, en donde tratas de hacer algo en el detalle (insert/update/delete) y el DataSet está cerrado.
Normalmente, no sería necesario utilizar transacciones ya que esa "cadena de conexiones" se encarga de todo.
Básicamente haces los cambios que quieras en los datos y luego le dices ApplyUpdates(0);
Código Delphi
[-]
procedure TDMClase.CDSMaestroAfterOpen(DataSet: TDataSet);
begin
CDSDetalle.Open;
end;
procedure TDMClase.CDSMaestroBeforeClose(DataSet: TDataSet);
begin
CDSDetalle.Close;
end;
procedure TDMClase.CDSMaestroAfterPost(DataSet: TDataSet);
begin
TClientDataSet(DataSet).ApplyUpdates(0);
end;
procedure TDMClase.CDSDetalleAfterPost(DataSet: TDataSet);
begin
TClientDataSet(DataSet).ApplyUpdates(0);
end;
procedure TDMConsultaLotes.CDSMaestroAfterDelete(DataSet: TDataSet);
begin
TClientDataSet(DataSet).ApplyUpdates(0);
end;
procedure TDMConsultaLotes.CDSDetalleAfterDelete(DataSet: TDataSet);
begin
TClientDataSet(DataSet).ApplyUpdates(0);
end;