Ver Mensaje Individual
  #11  
Antiguo 17-04-2010
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Reputación: 21
mRoman Va por buen camino
Cita:
Empezado por mRoman Ver Mensaje
Muchisisimas gracias por sus comentarios muchachos....los empezaré a aplicar...intentaré crear un trigger al cual lo asociare al sistema mediante el componente IBEvents....
Hola Amigos:

He decidido consultar nuevamente este hilo para dar la solucion que la verdad de todas las que me comentaron, pues desafortunadamente no se pudieron aplicar, por la filosofia de desarrollo que actualmente tiene el sistema.

Sé q este hilo es de hace 3 años aproximadamente, la solucion al problema de radicaba en que el componente de TRANSACCIONES desde que habria mi aplicacion estaba ACTIVA. Buscando aqui y alla temas nada q ver con este hilo, me encontre otro hilo, (no me acuerdo si aqui), donde mencionaban la propiedad StartTransaction la cual permite iniciar una transaccion y con el commit, grabar dicha transaccion, chequen el siguiente codigo.

Código Delphi [-]
procedure TfrmPrecios.pnlClavesExit(Sender: TObject);
begin
  inherited;
  if not(cbxProducto.KeyValue='') then
  begin
      ModDatos.trsFluida.Active:=False;
      ModDatos.trsFluida.StartTransaction;
      dsPrecios.Close;
      dsPrecios.ParamByName('CVE_PROD').AsString:=cbxProducto.KeyValue;
      dsPrecios.ParamByName('CVE_CONTRATO').AsInteger:=cbxContrato.KeyValue;
      dsPrecios.Open;
      if dsPrecios.IsEmpty then
      begin
            btnGrabar.Enabled:=True;
            btnEliminar.Enabled:=False;
            btnCancelar.Enabled:=True;
            dsPrecios.Append;
            dsPrecios.FieldByName('CVE_PRODUCTO').AsString:=cbxProducto.KeyValue;
            dsPrecios.FieldByName('CLAVE_CONTRATO').AsInteger:=cbxContrato.KeyValue;
      end Else begin
            mskPorcentaje.Text:=dsPrecios.fieldbyname('PORCENTAJE_GANANCIA').AsString;
            btnGrabar.Enabled:=True;
            btnEliminar.Enabled:=True;
            btnCancelar.Enabled:=True;
            dsPrecios.Edit;
      end;
  end Else
  begin
      Application.MessageBox('Digita una clave de producto valida','Error',mb_ok+mb_iconerror);
      cbxProducto.SetFocus;
  end;
end;


Lo que esta en ROJO fue lo que agregue para evitar el problema de salirme del sistema para que el otro usuario pudiera ver las actualizaciones que se habian hecho. Simplemente desactivo el componente IBTransaction y le indico que inicio con una nueva transaccion con "StartTransaction" y esto me resolvio el problema, ya que realice pruebas en RED de la aplicacion y funcionó, hizo lo que queria.

Con otro procedimiento talvez dando click en un botón, solo lo deje como estaba....IBTrs.Commit y listro. StartTransaction como que por "default" activa el componente, ya que si hacia esto: "ModDatos.trsFluida.Active:=True" e inmediatamente despues esto otro: "ModDatos.trsFluida.StartTransaction", marcaba un error de que la transaccion ya estaba activa....asi que la puese en False y listo.

Anteriormente las lineas de código que puse de color ROJO, no las tenia....

Espero que esto ayude a otras personas que tienen el mismo problema...que yo tenia.

Saludos y se esperan comentarios al respecto.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 17-04-2010 a las 20:44:34.
Responder Con Cita