TFDConnection.StartTransaction vs TFDTransaction. StartTransaction
#21
Posted 26 May 2017 - 08:04 AM
#22
Posted 26 May 2017 - 08:06 AM
Se me acaba ocurrir otra causa, es posible que cuando estoy haciendo algun cambio, update en vivo desde el IBExpert y al hacer commit podría afectar todas las transacciones activas?.
#23
Posted 26 May 2017 - 08:26 AM
Se me acaba ocurrir otra causa, es posible que cuando estoy haciendo algun cambio, update en vivo desde el IBExpert y al hacer commit podría afectar todas las transacciones activas?.
Mmmm, no. Yo hago lo mismo y no afecto las transacciones del Sistema.
Debe ser otra cosa dentro del código.
#24
Posted 26 May 2017 - 08:40 AM
Mmmm, no. Yo hago lo mismo y no afecto las transacciones del Sistema.
Debe ser otra cosa dentro del código.
Bien, se me acaba de ocurrir otra posible causa, como yo ando creando los datasets en memoria y lo endoso dentro de un try..finally al ocurrir una excepción, llegaría a liberarse dicho dataset?, es posible si no se liberara se quedara en el limbo y que fuese sustituido por otra transacción?, digo, sino, sigo insistiendo que podrían ser actividades paranormales.
#25
Posted 26 May 2017 - 08:51 AM
Bien, se me acaba de ocurrir otra posible causa, como yo ando creando los datasets en memoria y lo endoso dentro de un try..finally al ocurrir una excepción, llegaría a liberarse dicho dataset?, es posible si no se liberara se quedara en el limbo y que fuese sustituido por otra transacción?, digo, sino, sigo insistiendo que podrían ser actividades paranormales.
Ajá.
Si no es mucho lío, puedes crear un TFDQuery arrastrando un componente a tu Form. Y probar que pasa ahí. Lo asocias a una transacción y a un Connection.
Te mando una foto para que veas mi DataModule con todos esos componentes FireDAC.
Santiago.
Attached Files
#26
Posted 26 May 2017 - 08:57 AM
Me costará poner los Datasets en Diseño, lo he estado haciendo así para evitar ver tantos datasets en un Datamodule, me vuelvo bizco
#27
Posted 26 May 2017 - 09:09 AM
Me costará poner los Datasets en Diseño, lo he estado haciendo así para evitar ver tantos datasets en un Datamodule, me vuelvo bizco
Jajajaj, sí.
Pero bueno, en una de esas la solución está por ese lado.
#28
Posted 31 May 2017 - 05:33 PM
[OFF TOPIC]
Saludos
He leído todo el hilo y al final me he quedado mudo, pues si existe intervención de entes de ultratumba, la verdad hasta allá no llego.
YO trabajo con Oracle y con MySQL y en ambas utilizo un objeto transacción para el manejo de las mismas, y hasta ahora cero problemas. Creo que deberías sumergir tu equipo en agua maldita, o de plano hacer un sacrificio de una doncella, si la encuentras.
Saludos!!
#29
Posted 01 June 2017 - 06:49 AM
Bien, se me acaba de ocurrir otra posible causa, como yo ando creando los datasets en memoria y lo endoso dentro de un try..finally al ocurrir una excepción, llegaría a liberarse dicho dataset?, es posible si no se liberara se quedara en el limbo y que fuese sustituido por otra transacción?, digo, sino, sigo insistiendo que podrían ser actividades paranormales.
Un poco tarde, pero en un try-finally, el finally se ejecuta incluso aunque ocurran excepciones. Lo unico que puede "abortarte" un finally es que ocurra una excepcion dentro del propio finally, en ese caso el finally no se ejecuta completamente
#31
Posted 01 April 2018 - 09:03 AM
#32
Posted 02 April 2018 - 05:40 PM
Uso de transacciones con Firedac y Firebird
Enncontre una posible causa problema:
Firebird puede manejar transacciones anidadas. cuando se inicia el programa usando coneccion con firedac por omision es autocommit.
Normalmente colocamos :
-
transaccion.StartTransaction;
-
try
-
execute procedurex
-
commit
-
except
-
rollback
-
end
-
la transaccion ya existe lo que quiere decir es que si preguntamos
-
if DB_Firedac.InTransaction = false thenDB_Firedac.StartTransaction;con esa intruccion evitamos anidar las transaccionespero de otro forma nos tocaria dar 2 veces commitpara que los cambios sean visibles a otros usuarios
#33
Posted 03 April 2018 - 10:57 AM
Ya con hacer uso del TFDConnection te evitas todo eso, así al final fue como lo hice:
Connection.StartTransaction; try //Funciones, procedimientos etc: Connection.Commit; except Connection.RollBack; end;
#34
Posted 03 April 2018 - 07:34 PM
Para el caso de motores como Firebird que soportan anidamiento de transacciones, segun la documentacion, es correcto el uso del componente dedicado. Aunque como nunca he trabajado con este concepto no puedo aportar mucho mas
De todos modos, vuelvo a recalcar lo que ya hemos dicho y es justamente lo que comenta Fernando en el ultimo post: ese pedazo de codigo para manejar transacciones en Delphi con <practicamente cualquier biblioteca de acceso a datos> deberia ser un patron con nombre y apellido.
#35
Posted 18 June 2019 - 03:15 PM
El compañero asapltda sin querer reportó el hilo en lugar de responder. Este nos comenta:
Hola migre de SQLDIRECT a Firedac y he tenidos muchos dolores de cabeza porque EN SQLDIRECT UNO ININICA LA TRANSACCION Y LA TERMINA EXPLICITAMENTE
En firedac revise los parametros de autocommit, aotostart, autostop, disconectaction para manejo de transacciones, porque la omision es autocomit y la trasaccion esta activa, si actualiza mas de una tabla con autocommit no reversa las primeras tablas con rollback
esa es mi experiencia
Saludos,
Also tagged with one or more of these keywords: FireDAC
PROGRAMACIÓN →
Delphi →
Convertir valor de campo TString en FDQueryStarted by jaml , 13 Apr 2023 string, bbdd, Firedac |
|
|
||
PROGRAMACIÓN →
Delphi →
Eventos con FiredacStarted by balger , 08 Aug 2019 delphi, firedac, eventos, events |
|
|
||
BASES DE DATOS →
Bases de Datos de Escritorio →
Importar un CSV con FIREDACStarted by Amadis , 09 Oct 2018 delphi, csv, firedac, xe8 |
|
|
||
PROGRAMACIÓN →
Delphi →
Valores textos se guardan como ????tE? al hacer insert masivos con FireDACStarted by enecumene , 11 May 2018 FireDAC, Firebird |
|
|