Ver Mensaje Individual
  #2  
Antiguo 02-01-2006
Avatar de FunBit
FunBit FunBit is offline
Miembro
 
Registrado: jun 2005
Ubicación: Santa Maria d'Oló
Posts: 572
Reputación: 19
FunBit Va por buen camino
Ya he solucionado mi problema. Pongo el código final para que sirva de ayuda si alguien lo necesita.

Código Delphi [-]
    try

      //Preparamos la transacción
      DataSet.SQL.Clear;
      DataSet.SQL.Add('SET AUTOCOMMIT = 0');
      DataSet.Execute;

      //Inicializamos la transacción
      DataSet.SQL.Clear;
      DataSet.SQL.Add('start transaction');
      DataSet.Execute;

      //Seleccionamos el registro a modificar con propiedades correctas
      DataSet.SQL.Clear;
      DataSet.SQL.Add('SELECT * FROM tabla LOCK IN SHARE MODE');
      DataSet.Execute;

      //Actualizamos los datos del campo correspondiente
      DataSet.SQL.Clear;
      DataSet.SQL.Add('UPDATE tabla SET');
      DataSet.SQL.Add('campoDB=datosAct');
      DataSet.SQL.Add('WHERE condicion<>0');
      DataSet.Execute;

      //Finalizamos la transacción
      DataSet.SQL.Clear;
      DataSet.SQL.Add('commit');
      DataSet.Execute;

      //Restauramos las propiedades originales
      DataSet.SQL.Clear;
      DataSet.SQL.Add('SET AUTOCOMMIT = 1');
      DataSet.Execute;

    except

      on E: Exception do begin
        //Deshacemos los pasos de la transacción
        DataSet.SQL.Clear;
        DataSet.SQL.Add('RollBack');
        DataSet.Execute;

      end;

    end;
Si alguien ve alguna "irregularidad" en el código agradeceré cualquier comentario u opinión.

Un saludo!!!
__________________
Brot Psicòtik

Última edición por FunBit fecha: 02-01-2006 a las 17:29:30.
Responder Con Cita