Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2013
glopez glopez is offline
Miembro
 
Registrado: ago 2003
Ubicación: Huelva
Posts: 76
Poder: 21
glopez Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 09-05-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
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.

Saludos.
Responder Con Cita
  #4  
Antiguo 09-05-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
Espero no resultar "SPAMoso" con estas referencias.
Es libre y gratis, distinto sería que cobraras por ello, aunque ni así, ¡cuántas veces recomendamos productos que son pago!, muchas veces.
Responder Con Cita
  #5  
Antiguo 09-05-2013
glopez glopez is offline
Miembro
 
Registrado: ago 2003
Ubicación: Huelva
Posts: 76
Poder: 21
glopez Va por buen camino
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?
Responder Con Cita
  #6  
Antiguo 09-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por glopez Ver Mensaje
[...] 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?
No conozco lo suficiente los componentes FIBPlus, pero, por lo que mencionas, supongo que usas algún objeto central de tipo conexión, data base o transacción, y que además las ventas pueden ejecutar algún Post antes de ser confirmadas. Para captura con varios conjuntos de datos (maestro-detalle, por ejemplo), mantengo todo en memoria hasta que ya es seguro enviar al servidor (uso ClientDataSets). Para conseguir esto en FIBPlus, me parece que debes poner su propiedad CachedUpdates en True. Así cada Post que hagas se mantendrá en memoria, hasta que llames a los métodos ApplyUpdates (para mandar la información a la base de datos) o CancelUpdates (para cancelar lo que hayas capturado).

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.
Responder Con Cita
  #7  
Antiguo 09-05-2013
glopez glopez is offline
Miembro
 
Registrado: ago 2003
Ubicación: Huelva
Posts: 76
Poder: 21
glopez Va por buen camino
ok, muchas gracias, lo probaré y ya os cuento.
Responder Con Cita
  #8  
Antiguo 10-05-2013
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
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]
__________________
Be water my friend.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con transacciones rruffino SQL 0 07-05-2013 20:02:01
problema con visibilidad de transacciones Galahad Firebird e Interbase 14 18-12-2008 21:10:34
Problema con transacciones en Access y Delphi Capi666 SQL 1 11-01-2007 21:49:14
Problema con TClientDataSet y Transacciones dieleo Conexión con bases de datos 0 01-09-2006 02:06:32
Problema en el uso de Transacciones AGAG4 Conexión con bases de datos 13 15-06-2005 19:56:49


La franja horaria es GMT +2. Ahora son las 05:34:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi