Problema con TClientDataSet y Transacciones
Hola a todos.
Tengo un problemita, espero que alguien tenga la respuesta. Tengo el siguiente codigo IbTransaction.StartTransaction; try ClientDataSet1.ApplyUpdates(0); ClientDataSet2.ApplyUpdates(0); ClientDataSet3.ApplyUpdates(0); ibTransaction.Commit; except ibTransaction.RollBack; end; Los ClientDataSet estan conectados de la siguiente forma. IbQuery --> DataSetProvider --> ClientDataSet --> DataSource =================================================== El problema es que si ocurre un error al actualizar el ClientDataSet2, realizo un RollBack, corrijo el ClientDataSet2, envio a actualizar nuevamente, y no actualiza el ClientDataSet1, o sea que no graba la base de datos y sí graba el ClientDataSet2 y ClientDataSet3. Me imagino que es porque luego de realizar el ApplyUpdates en ClientDataSet1, el mismo queda como actualizado. (Como hago para que esto no ocurra ? ) Aparte para que el ClientDataSet genere un error, para que salga por el except tuve que levantar una excepcion desde el evento OnUpdateError del DataSetProvider (que me parece una burres total), porque sino generaba el error y dejaba grabado el ClientDataSet1 en la base de datos y por supuesto no tenia grabado el ClientDataSet2 y 3. Pregunta : . Si hago un RollBack, no tendria que quedar sin actualizar ? . Como hago para que el ClientDataSet1 actualice ? Grabe los registros en la base de datos luego de un RollBack Podria ser que el ClientDataSet trabaja fuera de la base de datos y no presta atencion a las transacciones ? Desde muchas gracias a quien pueda ayudar. |
La franja horaria es GMT +2. Ahora son las 07:20:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi