Ir al contenido


Foto

TFDConection StartTransaction no hace el Rollback


  • Por favor identifícate para responder
2 respuestas en este tema

#1 Soa Pelaez

Soa Pelaez

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 14 junio 2018 - 02:54

Buen día.

Tengo el siguiente código donde valido una transacción con un campo llave numérico, en caso de error realizo un rollback de la transacción y el campo llave lo aumento e inicio la transacción, el guarda el registro pero igual me tira el error de que la transacción no se podía realizar por error en llave y esa es la transacción que se debería cancelar con el rollback.


delphi
  1. //Conexion --> TFDConnection
  2. //Squema --> TDSchemaAdapter
  3. //
  4. Conexion.StartTransaction;
  5. try
  6. iErrors := Squema.ApplyUpdates(0);
  7. if iErrors = 0 then
  8. begin
  9. for x := 0 to Squema .Count - 1 do
  10. if Squema .DataSets[x].UpdatesPending then
  11. begin
  12. Squema .DataSets[x].CommitUpdates;
  13. Conexion.Commit; //09/12/2015
  14. end;
  15. end
  16. else
  17. begin
  18. Conexion.Rollback;
  19. end;
  20. except
  21. on e: Exception do
  22. begin
  23. Conexion.Rollback;
  24. raise;
  25. end;
  26. end;

Que error tengo en el código o que me falta para que cancele correctamente la transacción, uso un TFDConnection, TFDQuery, TDSchemaAdapter. La parte donde realizo el aumento de la llave numérica es en el evento OnError del TFDQuery.

Gracias de antemano.


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 15 junio 2018 - 07:05

Los datasets tienen asignado la transacción?, además que no especificas los componentes que utilizas.

 

Saludos.


  • 0

#3 Soa Pelaez

Soa Pelaez

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 15 junio 2018 - 09:49

Los datasets tienen asignado la transacción?, además que no especificas los componentes que utilizas.

 

Saludos.

Si tienen asignado el esquema y la conexión, en el final y al inicio especifique los componentes que utilizo.

 

Uso un TFDConnection, TFDQuery, TDSchemaAdapter. La parte donde realizo el aumento de la llave numérica es en el evento OnError del TFDQuery


  • 0




IP.Board spam blocked by CleanTalk.