Jump to content


Photo

TFDConection StartTransaction no hace el Rollback


  • Please log in to reply
2 replies to this topic

#1 Soa Pelaez

Soa Pelaez

    Newbie

  • Miembros
  • Pip
  • 3 posts

Posted 14 June 2018 - 02:54 PM

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
  • 7419 posts
  • LocationRepública Dominicana

Posted 15 June 2018 - 07:05 AM

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 posts

Posted 15 June 2018 - 09:49 AM

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.