PDA

Ver la Versión Completa : cancelar un insert en Firebird


ebeltete
24-07-2013, 00:59:23
Hola a todos, uso Firebird con Delphi 5 y los componentes MDO, resulta que cuando hago un insert en una tabla y luego quiero cancelar ese insert, al hacer tabla.refresh, ese registro que hiba a insertar pero cancele su insercion con tabla.cancel, sigue estando en la muestra, para no verlo mas tengo que hacer tabla.close tabla.open.
Que hago mal?
Saludos y gracias.

look
24-07-2013, 01:16:00
Hola a todos, uso Firebird con Delphi 5 y los componentes MDO, resulta que cuando hago un insert en una tabla y luego quiero cancelar ese insert, al hacer tabla.refresh, ese registro que hiba a insertar pero cancele su insercion con tabla.cancel, sigue estando en la muestra, para no verlo mas tengo que hacer tabla.close tabla.open.
Que hago mal?
Saludos y gracias.

tienes que usar transacciones ,

inicias una transaccion:
database.starttransaction

confirmas la transaccion:
database.commit.

este tema se ha tratato mucho en los foros.


Saludos!

look
24-07-2013, 01:19:15
aqui un ejemplo:

http://www.clubdelphi.com/foros/showthread.php?t=82184&highlight=intransaction

ebeltete
24-07-2013, 17:55:12
Gracias por tu respuesta, estoy usando transacciones y al cancelar la insercion hago un Transaction.RollbackRetaining.
El insert se cancela correctamente porque no modifica la tabla, el tema es que si hago tabla.refresh lo sigo viendo en la muestra, la manera de no verlo es haciendo tabla.close y tabla.open. No se si esta claro pero el tabla.cancel me funciona bien al querer modificar un registro, pero no me funciona bien al querer cancelar un insert.
Gracias y saludos