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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2006
Avatar de dandia28
dandia28 dandia28 is offline
Miembro
 
Registrado: dic 2005
Ubicación: Uruguay
Posts: 39
Poder: 0
dandia28 Va por buen camino
Unhappy control de concurrencia

Hola, tengo un problemita con una aplicación. La aplicación esta hecha en delphi 6 con componente IBX y firebird 1.5.3
Estuve leyendo el documento de IBX de ernesto cullen pero de todas formas no logro solucionarlo.
El tema es así, el usuario abre el formulario que tiene campos de varias tablas relacionadas, es decir comienza la transaccion y comienza a hacer cambios sin aceptar aún. Entra otro usuario abre el mismo registro ( o registros relacionados) hace un rápido cambio y confirma su transacción. El primer usuario sigue editando (que aún no habia cerrado su transacción) y por fin confirma la misma.... la aplicación se queda con los cambios del último usuario y se pierde lo que hizo el que la abrio entre medio....sin ningun aviso.
Yo el componente lo tengo con "read commited" como nivel de aislamiento y con los parametros "nowait" y "rec_version"


Agradezco alguna ayuda con este tema

Saludos, Daniel
Responder Con Cita
  #2  
Antiguo 16-11-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
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
Lo que a veces he hecho en casos similares es utilizar un TimeStamp; Es un campo de tipo FechaHora en la tabla en cuestión.

(1) Antes de modificar un registro leo el TimeStamp.
(2) Siempre que se actualiza un registro, se comprueba el TimeStamp y si no ha cambiado se actualiza el valor del registro y siempre se actualiza el TimeStamp.

Con estas dos premisas, en el caso que tu propones, el usuario que actualiza rápido no tiene problemas, y al intentarlo el segundo detectaría que el TimeStamp que leyó y el que hay antes de hacer el Update no es e mismo, por lo tanto otro usuario ha actualizado entre medio.

Espero haberme explicado bien.

Implica más consultas, pero como mínimo puedes avisar al usuario; Se puede mejorar más ampliando los campos de control (aunque eso hará más lentas las consultas); Por ejemplo con el último usuario de la modificación.

Cuando se detecta un cambio, puedes dar al usuario la opción de Continuar o Cancelar (si para tu caso tiene sentido).
__________________
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 16-11-2006
Genner Genner is offline
Miembro
 
Registrado: feb 2006
Posts: 44
Poder: 0
Genner Va por buen camino
Creo q lo que necesitas es algo de documentacion sobre bloqueos, lamentablemente no tengo mucha idea sobre eso pero de que son bloqueos son bloqueos
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
Concurrencia supermilloriver Conexión con bases de datos 3 20-07-2006 00:10:46
Concurrencia leflaco PHP 6 06-05-2006 07:55:01
control de concurrencia ximenita MySQL 1 05-11-2005 21:48:47
FIBPlus - Ordenar Registros y Control Concurrencia Gabriel Conexión con bases de datos 0 25-08-2005 11:45:55
Concurrencia mary123 C++ Builder 1 31-03-2005 19:58:13


La franja horaria es GMT +2. Ahora son las 13:22:13.


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