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 17-08-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Transacción y DBGrid

Hola compañeros del foro.

Después de consultar innumerables hilos acerca de las transacciones y todo ello, me queda una duda.

Utilizo Interbase y los componentes IBX de Delphi 2006.

Mi pregunta es : Utilizo un DBGrid, por lo tanto tengo que activar una transacción sobre la tabla que quiero visualizar. Hay dos usuarios con el mismo DBGrid abierto sobre la misma tabla en dos ordenadores diferentes y con el mismo registro. Si un usuario modifica ese registro concreto, y realiza el CommitRetaining correctamente, tengo alguna opción de averiguar antes de que el otro usuario edite el mismo registro si ha sido modificado por el primer usuario y de esta manera poder dar una indicación de que el registro ha sido previamente modificado ?

Lo que sí consigo es hacer antes de la edición (que tambien realizo con DBEdit's) un Refresh, con lo que al editar se muestran los últimos datos que fueron grabados mediante el Commit del otro usuario. Pero en un form con mucha información, la actualización de un dato concreto puede pasar desapercibida, por lo que me gustaría dar una indicación de que el registro que se va a editar ha sido previamente modificado por otro usuario.

Gracias y un saludo a todos.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 17-08-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto...

La única forma que conozco cuando otro usuario ha ó esta modificando un registro es cuando te lanza la excepción
lock conflict on no wait transaction
deadlock
update conflicts with concurrent update


Puedes cachar esa excepción:
Código Delphi [-]
try
  //Tu Código
except
  on E:Exception do
  if copy(E.Message,1,45) = 'lock conflict on no wait transaction deadlock'
    showmessage('Registro esta haciendo Modificado por otro usuario');
end;
Responder Con Cita
  #3  
Antiguo 17-08-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Lo que pasa es que entiendo que esa excepción la obtienes en el momento de hacer el commit de la transacción, es decir, una vez que el usuario ya ha introducido los datos y vamos a grabar.

Lo que intento es hacerlo antes de que se haga el commit, en principio al empezar a editar.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 17-08-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Creo que lo mas simple seria hacer una tabla (temporal) en la que se graven los cambios y que cuando el usuario entre, esta se inicie previamente y si hay modificaciones no se acepten o de otra indicacion la que se necesite y
Si esta tabla esta siendo editada de un mensaje al otro usuario
saludos
La solucion mas simple siempre es mejor
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
RollBack con más de una transacción kikodelphi MS SQL Server 2 12-10-2005 20:24:25
Problema con transaccion con IB reina Varios 2 03-09-2005 02:40:11
Confilcto en Transaccion muli Firebird e Interbase 2 24-09-2004 16:33:26
Transaccion Esau SQL 1 14-01-2004 10:00:34
Ejemplo de una Transaccion @-Soft Conexión con bases de datos 4 05-08-2003 14:51:44


La franja horaria es GMT +2. Ahora son las 14:15:17.


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