Ver Mensaje Individual
  #4  
Antiguo 13-02-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Reputación: 8
usuario1000 Va por buen camino
Gracias por las respuestas, me he limitado a ejecutar un proceso sencillo y he hecho paso a paso lo siguiente y algo falla, me explico:


Código Delphi [-]
  transacciones.StartTransaction;
   try
      QExpedientes.ExecSQL;// (aquí paro la ejecución y la ejecuto paso a paso)
      Result := 'Ok';
      transacciones.Commit;
    except
    on E: Exception do
      begin
         transacciones.Rollback;

      end;

   end;


1º Ejecuto el servidor en modo depuración. Es decir paso a paso. Tengo un stop puesto en la instrucción EXECSQL.
2º Ejecuto el Cliente en modo normal.
3º Ejecuto el SQLManager Lite para ver en todo momento los valores que toman los campos de un registro.
4º Modifico un registro en el cliente y pulso aceptar para que mande los datos al servidor con la correspondiente funcion.enviarDatos(dato1, dato2, dato3...);
5º En el servidor se ejecuta el proceso que he copiado mas arriba y se para la linea donde tengo el stop, y empiezo a ejecutar paso a paso.
6º Se ejecuta QExpedientes.ExecSQL y me voy a la base de datos y no observo modificación alguna, es de esperar que sea así, puesto que no ha llegado aún al commit.
7º Cuando se ejecuta la línea "transacciones.Commit", me voy de nuevo a la base de datos (SQLManager Lite) y le doy a refrescar para ver si ha cogido los nuevos datos y no los ha cogido, aún tiene los antiguos. Le doy a refrescar varias veces y nada de nada. Incluso ejecuto otro cliente y aparecen los datos antiguos. Deprimente.
8º Cierro la aplicación y ahora sí, estan los datos en la Base de Datos.


El problema que me encuentro es que en el momento que grabo un registro, no se actualiza la base de datos de inmediato, dando origen a un problema, que es que otro ususario se conecte y le lleguen unos datos que no sean los actualizados. De hecho me ha pasado ya y quiero evitar ese problema con la grabación inmediata de datos del cliente al servidor.


No sé que hago mal, en principio el proceso es muy sencillo, tal como he puesto más arriba. Supongo que será tocar alguna propiedad o algo del componente TFDTRansaction.


Espero me echen un cable.



Gracias anticipadas.
Responder Con Cita