Deshacer Post sin transacciones
hola compañeros,
estoy realizando unas modificaciones e inserciones en tablas a través de AdoQuery pero en un momento dado, por ejemplo en caso de error, necesito deshacer los cambios aplicados a las tablas. He intentado hacer servir transacciones pero me muestra el siguiente mensaje de error en el momento de realizar el BeginTrans: 'el proveedor actual no admite transacciones'. Sabeis a que se refiere o cómo evitar el error? Hay algún método alternativo a las transacciones para deshacer cambios en tablas? Gracias por la colaboración |
Hola miquellg
Si ya hiciste el post y quieres eliminar el ultimo registro, lo mas facil es Abrir la tabla enviarla al ultimo registro y eliminarlo. Código Delphi [-] ADOQuery1.open; ADOQuery1.Last; ADOQuery1.Delete; ADOQuery1.Post; Esto lo puedes hacer en un boton o donde quieras Saludos |
Pues existen varias posibilidades, una de ellas es utilizar tablas temporales (tablas en memoria) y otra es usar actualizaciones en cache (CacheUpdates).
Te dejo un enlace en donde se comenta como hacer aplicaciones con actualizaciones en cache utilizando los componentes ClientDataSet. ClientDataSet y DataSetProvider en aplicaciones cliente/servidor Saludos |
Gracias Caral,
pero necesito borrar más de un registro. Por ejemplo, tantas lineas de detalle de factura como haya insertado. Además quisiera deshacer los cambios y no borrar, para que los contadores de documentos no se viesen modificados. |
Hola
La opcion que propone Hector Randolph me parece interesante, sobre todo la parte de crear una tabla temporal, ya que en cuanto se este seguro de que los datos introducidos son los correctos, estos se pasan a la tabla principal y ya, asi no tienes que hacer modificacion alguna, incluso la transferencia de datos se puede hacer al final del dia. Otra forma de borrar los datos si la primera no te gusta es por medio de un campo fecha, numero o algun dato y asi borraras todo el registro correspondiente a dicho campo. Que motor de base de datos usas ? Saludos |
Trabajo con un AdoConection y supongo que haré un DELETE a través de una sentencia SQL de todos los registros insertados en las tablas.
|
Hola
Intenta algo como esto: Código Delphi [-] ADOQuery1.ExecSQL; ADOQuery1.SQL.Add('Delete * from TUTABLA where Factura = '+DBEdit1.text+''; ADOQuery1.open; ADOQuery1.Post; Con esto borraras los registros creados de una factura determinada Saludos |
La franja horaria es GMT +2. Ahora son las 08:56:10. |
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