Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Transacciones en Interbase

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Transacciones en Interbase Responder citando

Unas preguntas acerca de transacciones que me estan volviendo loco. Tengo una aplicacion que instalos en varios clientes e interbase 6 en un servidor. Programo con Builder 5.

Para trabajar utilizo IBQuerys (para selects) e IBSQL (para insert,delete y update). Cuando voy a insertar datos utilizo transacciones de la siguiente manera

Código:
try {
     IBT->Active = true;
     // inserto, consulto, borro...
     IBT->Commit();
} catch(...)
     IBT->Rollback();
}


Hasta ahora esto parecia funcionar pero si un usuario A tiene la aplicacion abierta e inserta, otro usuario B con la aplicacion abierta ve también su insercion (hasta ahi bien). El problema es un formulario en B que al hacer una operacion sobre el registro que inserto A, se bloquea. Sin embargo, si A cierra su aplicacion, B no tiene problemas (espero haberme explicado bien).

¿Puede ser problema de como uso las transacciones o debo buscar el error en otra causa?
Volver arriba
Mensaje    Asunto: Responder citando

El IBQuerys y el IBSQL estan unidos a la misma transacción?

A sigue bloqueando a B, aun despues del Commit?
_________________
Crandel

"hay 10 tipos de personas, las que ven en binario y las que no"

Angel Zeitoune - Artículo: Generación de eventos en C++Builder
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

a mi punto de vista, te falta el post


Código:
try {
     IBT->Active = true;
     // inserto, consulto, borro...
       TuTabla->Post(); 
      IBT->->CommitRetaining();
// con la linea de arriba, aplicas, y dejas la base de datos libre
// para todos los usuarios.
} catch(...)
     IBT->Rollback();
}

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

No uso tables, solo querys. De todas formas creo que localice el error. Habia una actualizacion fuera de la transaccion (es bastante extenso el código, con muchos botones el form... y me costo encontrarla), me imagino que seria eso, gracias a ambos.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.