![]() |
Cita:
- |
TOPX gracias por el Link
ya li visite la primera vez y llego a cumplir todo del tutorial, busco algun link de ejemplos firebird+ delphi si conoces algun estare agradecidor. |
Cita:
|
Además de los comentarios y tutoriales a los que te han remitido, yo optaría (centrándome en el código que has puesto), por no mantener las dos consultas abiertas.
En general es una buena costumbre no mantener consultas abiertas más tiempo del necesario. Por lo que veo, la primera consulta se usa para buscar un valor. Una vez abierta, recoge ese valor en una variable y ciérrala. Pruébalo y ya dirás...
|
hice el consejo y nada.
encontre este detalle si pueden ayudarme: tengo 10 monitores en stock si la PC1 realiza la venta de 1 Monitor con el codigo q pego arriba me muestra 9 monitores en stock. pero si habro la aplicacion en otra PC2..a.. PC5 me muestra que tengo sigue 10 monitores a la venta si le digo q quiero vender 1 ahi esta el problema. se bloquea todo,. entonces veo que le falta algo despues de _DM.consulta2.ExecSQL; |
¿Estás haciendo algo con transacciones?
Lo he comentado antes. ¿Estás haciendo los Commit? |
Yo creo que este tema es el mismo que este otro, allí te expliqué y te pregunté cosas, al igual que te están preguntando aquí... y no las contestas :confused:
Mejor voy a unir los dos hilos. |
no hay algunos ejemplos por ahi please para mi es mas facil ver como se hace
agradecido. |
Cita:
Además como sigues sin contestar nuestras preguntas... |
Hola darkbits,
Ya ha pasado una semana y creo que aún no has solucionado tu problema. Quiero redondear algunas comentarios y sugerencia que ya te han hecho otros foristas y quizás has pasado por alto: En Firebird todo ocurre siempre dentro de una transacción, aún cuando parezca que tu código no haya iniciado esa transacción. En tu código, cuando vendes un MOUSE y actualizas las cantidades, el registro que se actualiza en la tabla INALMACEN queda "retenido o bloqueado", ningún otro cliente (estación de trabajo) podrá modificar ese registro a menos que lo comprometas. Ahora, si el registro no es comprometido, los demás clientes podrán leer el registro pero en su versión original, no la versión modificada; es por esto que cuando realizas una venta, el PC que hizo la venta muestra en STOCK 9, mientras el resto de PC muestra 10 (la versión original del registro). Solución: Hay que finalizar la transacción. Al finalizar la transacción el registro o registros insertado/actualizado/borrado queda "visible" (o invisible si fue borrado) para los demás clientes. Para finalizar la transacción debes ejecutar el método commit o commitretaining sobre la transacción, tal cual lo indicó "Casimiro Notevi": _DM.consulta2.Transaction.commitretaining. En tu caso aconsejo que hagas uso de commitretaining, pues supongo que solo tienes un componente de transacción y cuando es así al ejecutar el método commit no solo se compromete la transacción sino que también se finaliza la conexión a la base de datos, en cambio commitretaining deja la base de datos, la transacción y los dataset abiertos para seguir trabajando sobre ellos. |
| La franja horaria es GMT +2. Ahora son las 12:45:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi