![]() |
Problema con transacciones, sqlite y componentes ZEOS
Bueno resulta que estoy desarrollando un programa estilo punto de venta codificado en delphi 2007, uso DB sqlite3 y componentes zeos para la conexion, en la parte de registrar las ventas utilizo transacciones con un zquery, todo perfecto, el problema radica en que tengo un boton para que a mitad de venta puedan consultar la lista de productos con codigos, precios y cantidades de los mismos, pero resulta que si estoy a mitad de la venta y ya di de baja algunos productos (conectada con zquerys y extrayendo datos con selects) no me actualiza los datos, al parecer la transacción me bloquea los datos o mas bien bloquea la DB (incluso se genera un temporal de la DB cuando inicio la trancaccion, son geniales las transacciones :P) y no puedo ver actualizadas las cantidades sino hasta que termino la transaccón, pero lo mas extraño del asunto es que en mitad de venta uso una ztable para verificar la cantidad en almacen y no vender productos que no tengo, y ahi sii me manda los datos actualizados, si se vende un producto lo descuenta, he intentado bastantes cosas para refrescar estos datos en la consulta de productos cuando se bloquea por la transacción, pero al parecer nada funciona, no se que hacer, la verdad es muy importante esto para mi porque es mi trabajo para graduarme de la universidad, ojala puedan ayudarme, saludos y gracias.
|
La idea es que si estás en mitad de una transacción, y desde fuera consultas datos de tablas relacionados con la transacción puedes obtener cosas no coherentes; Dependiendo del Isolation Level que estés utilizando obtendrás fantasmas, lecturas sucias o incluso llegarás a bloqueos (como te está pasando).
Prueba a lanzar las consultas utilizando la misma transacción que tienes abierta. |
Cita:
Saludos...:) |
Cita:
|
Cita:
Incluso he utilizado un programa externo para el manejo de la DB y con sentencias sql hago transacciones, inserto, elimno y consulto datos y si los maneja actualizados (osea que no es problema de sqlite), seria mas bien "problema con el zquery" por llamarlo de alguna manera. |
Cita:
De todas formas tendrias que informarte como trabaja SQLite en en ese sentido.;) Saludos...:) |
Cita:
|
Cita:
|
Bueno aunque estube pensando, no hago el select con el mismo query que inicio la transacción, osea aun continuo en la transacción pero uso un query diferente, no se si eso tenga algo que ver ¿?, yo me supongo que no, pero puede que me equivoque.
|
Parece que por fin encontré la solución a mi problema, resulta que no se porque diantres coloqué zconections por cada forma que tengo, eso quiere decir que tengo una por punto de venta y otra por busqueda de productos y al realizar la transacción en una zconnection esta bloquea la DB y en la segunda zconnection solo muestra informacion anterior a la transaccion, pero si uso la misma coneccion en la busqueda me muestra datos actuales durante la transaccion :D :D :D.
Gracias a las personas que intentaron ayudarme, aunque no nos entendieramos del todo :P y sobre todo por darme la idea de que tal vez los querys diferentes tenian algo que ver con el bloqueo, eso me llevo a las zconnections diferentes. Saludos. |
Cita:
Cita:
|
La franja horaria es GMT +2. Ahora son las 07:51:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi