¿Necesitas saber cómo implementar transacciones usando Interbase 6 e IBX Express y no morir en el intento?
Pues como consejo, en tu datamodule pega un componente TIBDatabase, uno TIBTransaction y finalmente un TIBTable o cualquier TIBDataSet.
Conecta IBDatabase1 con IBTransaction1 a traves de DefaultTransaction y DefaultDatabase. Configurá IBDatabase1 par que apunte a tu base de datos (archivo.gdb, usuario y password).
Despues conecta IBTable1 con IBDatabase1 y automáticamente se conectará con IBTransaction1. Seleccioná una tabla.
¿Hasta aquí todo bien?
Entonces, seguimos. Ahora pegá un botón (el que más guste) para el Commit y otro para el Rolback. Pegá una grilla enlazada a un DataSource y éste enlazado a la tabla para que veas el resultado.
Asigná los métodos DataModule1.IBTransaction1.Commit y DataModule1.IBTransaction1.Rollback a cada botón (en el evento OnClick, por supuesto y chequendo que exista una transacción activa: DataModule1.IBTransaction1.InTransaction).
Abrí la tabla, efectuá cualquier operación y probá de usar estos botones.
¿El resultado?: Las tablas simplemente se cierran.
Agregá entonces en el evento de la tabla AfterTransactionEnd: IBTable1.Open;
¿El efecto?: Se produce una excepción.
¿Entonces?, modificá el evento AfterTransactionEnd para que quede:
Código Delphi
[-]
IBTransaction1.Active := True;
IBTable1.Open;
y además agregá la línea IBTransaction1.Active := True; antes de abrir cualquier tabla.
!Y no morirás en el intento!