Ver Mensaje Individual
  #5  
Antiguo 05-05-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Reputación: 19
fedelphi Va por buen camino
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; //en el tag del este form paso el id de la sucursal desde el form ppal
            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
__________________
De lo que hay no falta nada!!!
Responder Con Cita