![]() |
Problema con transacciones
Hola estoy desarrollando un ventana de ventas en la que quiero ir dejando en espera tickets que no están finalizados. Es decir tengo una venta activa y comienzo con otra sin finalizar la primera para luego poder finalizarla mas tarde. El problema que tengo es que cuando finalizo una de ellas como todo se encuentra en la misma transacción se me confirman las dos. Os agradecería que me dierais alguna sugerencia para hacer esto.
He estado mirando información sobre savepoint pero creo que con esto no se puede hacer. Utilizo firebird 2.1 y componentes FIBPlus. |
Si necesitas tener varios tickets "Abiertos", tal vez deberías utilizar 2 tablas.
Una temporal para los tickets mientras trabajas y otra "definitiva" para almacenarlos una vez están completados. De todas formas, son pocos detalles para saber si es correcto lo que te estoy comentando. |
Puedes usar un conjunto de datos para cada instancia del formulario, es decir, un data set por cada ventana abierta.
Es de suponer que pones, como debe ser, el conjunto de datos de FIBPlus en un DataModule. En caso de que uses Delphi 7 o XE2, te serviría un componente DataSource con capacidades de clonación que anda por ahí. Espero no resultar "SPAMoso" con estas referencias. :o Saludos. |
Cita:
|
La solución que se me había ocurrido era crear un array de dataset por cada ticket que tengo abierto. Ya que todo se realiza en el mismo form y con un navigator voy seleccionando el registro maestro(venta) que necesito. Pero lo veía muy demasiado complejo, Y ademas también tendría que poner una transacción para cada registro, para poder confirmar una venta en concreto. Y desde el navigator tengo que poder pasar de una venta a la otra por lo que sería preferible que estuvieran dentro de la misma transacción. De todas formas le echado un vistazo a los componentes que mencionas y parecen muy interesantes. ¿Cuando se clona el dataset también lo hace la transacción?. ¿Podría hacer un commint de un ticket y que los demás no se confirmaran?
|
Cita:
Con esa técnica se disipa la necesidad de manejar conexiones o transacciones separadas (aunque si esto fuese menester también, en GHF existe la función ghClone que permite clonar "cualquier" componente). Saludos. :) |
ok, muchas gracias, lo probaré y ya os cuento.
|
Hola.
Igual es una barbaridad lo que yo hago pero lo suelto. Yo lo que hago para esto es tener 3 formularios iguales cargados en memoria y a los que se puede llamar con un botón para traer a pantalla un ticket u otro, cuando hay algún ticket en curso le cambio el color al fondo del botón para que se sepa que hay una venta pendiente en otra pantalla. [IMG]URL=http://www.casimages.es/i/130510103742611565.jpg.html] ![]() |
La franja horaria es GMT +2. Ahora son las 02:06: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