Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-01-2009
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Unhappy Trasacciones Firebird dbExpress

Hola gente del foro, en los últimos días me ha surgido un problema con las transacciones y no se como solucionarlo, actualmente utilizo Delphi 2007 con componentes de conexion dbExpress y el motor de base de datos Firebird 2.0.

La situación es la siguiente, tengo dos usuarios en la base de datos ademñas de SYSDBA,Usuario1 y Usuario2, en un modelo de facturación, tengo una tabla donde guardo el número para la siguiente factura, en la situación ideal, inicio una transacción, tomo el valor de la factura de la tabla numero_comprobante, actualizo ese registro al siguiente número, creo una nueva factura y le asigno el número obtenido, al finalizar hago un commit para guardar los cambios, en caso de que se genere un error se hace un rollback para volver todo a su estado anterior. Esto funciona en el caso de que un usuario esté accediendo a estas tablas, pero el problema surge cuando se da esta situación, el Usuario1 inicia la transacción, obtiene el número de la factura y actualiza el registro al siguiente número, y mientras se completa la factura, en ese mismo instante el Usuario2, inicia otra transacción (estamos hablando de que cada usuario se encuentra en una PC diferente, pero conectados a la misma base de datos), obtiene el número de la factura y cuando actualiza el registro con el siguiente número este, por decirlo mal y pronto, se queda colgado, y si el Usuario1 cancela su factura el Usuario2 continua sin ningún problema, pero si el Usuario1 guarda los cambios, al Usuario2 el sistema le genera un error y no lo deja continuar.
Mi duda es, si se puede detectar una transacción iniciada por otro usuario, para prevenir que se "cuelgue" el sistema y por ende no me genere el error, cosa de que si lo detecto, poder mostrar un mensaje diciendo "En este momento no se puede realizar esta tarea, intentelo más tarde" o algo parecido.

Saludos
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
 



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
Firebird y dbExpress PacoPepe Conexión con bases de datos 5 12-09-2007 18:58:23
Firebird con DbExpress norberto_larios Conexión con bases de datos 1 26-07-2005 18:48:08
dbexpress - firebird Ricardo Alfredo Conexión con bases de datos 4 31-05-2005 17:47:25
DBExpress con FireBird diegofhernando Firebird e Interbase 0 11-12-2004 16:11:19
FireBird 1.5 RC1 y DBExpress mosorio Providers 2 16-06-2003 10:58:41


La franja horaria es GMT +2. Ahora son las 18:58:35.


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