Egostar creo que despues de investigar un poco con la informacion del hilo que diste en el mensaje anterior llegue a una solucion con los aportes de ronpablo, muchas gracias ronpablo. Esto es para que me corrijan por favor si estoy equivocado, ya que estoy aprendiendo, ya que son observaciones de practicar e investigar y la experiencia luego nos dara la razon si es que la tenemos. Bueno primero lo que pasaba es que al realizar el commit IBTransaction1.Commit, se desctiva la transaccion y todas las tablas por lo que sale el error "no se puede realizar la operacion en un dataset cerrado" entonces lo hice asi:
Código Delphi
[-]
try
if not modulodatos.IBTransaction1.Active then
modulodatos.IBTransaction1.StartTransaction;
if not Modulodatos.IBTAlmacen.Active then
Modulodatos.IBTAlmacen.Active:=True;
modulodatos.IBTAlmacen.Append;
modulodatos.IBTAlmacen.FieldByName('ID_ALMACEN').AsInteger:=1;
modulodatos.IBTAlmacen.FieldByName('NRO_TICKET').AsString:=ECodigo.Text;
modulodatos.IBTAlmacen.FieldByName('ID_SUCURSAL').AsInteger:=Tag; modulodatos.IBTAlmacen.FieldByName('ID_TICKET').AsInteger:=id_ticket;
modulodatos.IBTAlmacen.FieldByName('FECHA_PRESENTACION').AsDateTime:=Date;
modulodatos.IBTAlmacen.FieldByName('MONTO').AsFloat:=Monto;
modulodatos.IBTAlmacen.FieldByName('FECHA_INGRESO').AsDateTime:=Date;
modulodatos.IBTAlmacen.FieldByName('NRO_CAJA').AsInteger:=RGCajas.ItemIndex+1;
modulodatos.IBTAlmacen.Post;
modulodatos.IBTransaction1.CommitRetaining;
except
on E:Exception do
begin
modulodatos.IBTransaction1.Rollback;
showmessage('Error al insertar en base de datos. '+e.Message);
end;
end;
entonces con el commit se cierra todo lo que dije anteriormente, pero con commitretaining no se cierran, siguen en el mismo estado en el que estaban cuando empieza la transaccion. Espero haber sido de ayuda, ah y me olvidaba, gracias a caral tambien por lo de la excepcion con el rollback, le agregue el mensaje para saber en caso de que se produzca algun error saber de que se trata. Saludos a todos y muchas gracias!!!!!
Fede