Saludos, espero me podais dar una mano con una aplicación hecha en Delphi 7. Tengo dos TIBQuerys (QUser y QBitacora) cuyos datos se muestran en dos TDBGrids cada uno enlazado con su respectivo TDataSource. Tengo también un TIBQuery (QInsertarUser) para añadir registros. Todos ellos están conectados a un TIBDataBase (celina) y comparten el mismo TIBTransaction (Tcelina). Funciona de maravilla al insertar un registro. Sencillamente:
Código Delphi
[-]
QInsertarUser.Close;
QInsertarUser.Params[0].AsString:="Mineral complejo"; QInsertarUser.Params[1].AsString:="Mina San José"; QInsertarUser.Params[2].AsInteger:=125; QInsertarUser.Params[3].AsString:="Zinc"; QInsertarUser.ExecSQL;
Tcelina.Commit;
ShowMessage('Los datos se han guardado correctamente.');
Para ver el registro insertado inmediatamente en su TDBGrid simplemente hago:
Sin embargo "desaparecen" los registros de QBitacora (donde con un select muestro fecha, hora y descripcion de todas las tareas hechas) de su TDBGrid respectivo después de hacer toda la tarea de arriba. Me parece que al hacerle el commit a Tcelina, el QBitacora se cierra pues para que los registros no "desaparezcan" de su TDBGrid también tengo que hacer:
Código Delphi
[-]
QBitacora.Close;
QBitacora.Open;
Y no hay mayor problema. El hecho es que quiero ver usando TDBGrids todos los cambios hechos inmediatamente después de insertar, modificar o eliminar un registro. El lío está en que quizás tenga que hacer la operación de cerrar y abrir tooooooodos los TIBQuerys (que comparten todos un mismo TIBTransaction). Puedo hacerlo pero ¿Hay forma de saltarse esta tarea tan morosa? Usé un TIBTransaction adicional para la consulta que permite añadir registros pero ya no puedo ver el registro inmediatamente añadido en el TDBGrid de QUser a menos que primero le haga un commit a su TIBTransaction y luego cierre y abra QUser. ¿Significa que hay que hacerle commit a todas las transacciones y abrir y cerrar sus respectivas consultas para ver los cambios hechos inmediatamente en un TDBGrid?
Es mi primera experiencia con Firebird, antes hacía todo usando el MSAccess y obviamente nunca tuve esos problemas pero la empresa ha crecido, hay más empleados, más usuarios y el MSAccess no va más. ¿Quizás deba usar más de un TIBDatabase o un TIBTransaction o tal
vez usar otro componente de la paleta de Interbase o cambiar alguna propiedad en el Object Inspector? Ojalá se haya comprendido.
Gracias mil y un abrazo...