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 16-02-2004
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Como se podría bloquear un registro

Hola a todos y gracias por anticipado.

Trabajo con D5 y tablas Paradox, es una aplicacion en red y mi problema con los bloqueos es el siguiente: La aplicacion tiene una primera pantalla donde saco un DBgrid con los registros de una tabla, y entre otros un boton de modificar datos.
Si hago doble clic en el dbgrid (consulta) o si hago un clic y botón modificar me pasa a la sagunda pantalla mostrandome los datos. Bien pues me gustaria que:

Si doy un clic en el registro "n" y pico el boton modificar, que cuando alguien desde otro puesto haga doble clic en el dbgrid en el registro "n" diga :"registro modificandose por el usuario xxxxx"; y si dos puestos hacen doble clic sobre el mismo registro que los deje visualizar la pantalla.

Es decir:
1) PC 1 DblClic registro 7 y PC 2 DblClic registro 7 = Pasa 2ªPantalla

2) PC 1 Btn Modificar 7 y PC 2 DblClic Reg.7 = Que diga "Registro modificandose por usuario xxxxxx" y no pasa 2ª pantalla

3) PC 1 Btn Modificar 7 y PC 2 BtnModificar 7 = Que diga "Registro bloqueado por usuario xxxxxx" y no pasa 2ª pantalla

He usado tres o cuatro funciones (en el OnEditError de la tabla, LockRecord, DbiIsRecordLocked, etc) y ninguna hace al 100% lo que quiero. El supuesto 1 y 3 si, pero el 2 no lo consigo). ¿Podría alguien echarme una mano con esto por favor?

Os vuelvo a dar a todos las gracias por intentarlo

Marcial
Responder Con Cita
  #2  
Antiguo 16-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Mira luego del doble click colocas a editar el registro, yo lo he hecho y seguro que funciona, yo lo hice de la siguiente forma
Código:
   try
      Table1.Edit
   except
      // Capturar el error si es de bloqueo manejarlo como se desea
   end;
al Darle click sobre el registro el Table1.Edit lo bloquea al otro usuario querer hacer lo mismo no va a poder editarlo porq ya esta en edicion y te va a dar la excepcion.

la clausula except no te lo coloco porq no la se de memoria pero investiga las excepciones que seguro que lo puedes hacer.

cualquier duda me preguntas
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 17-02-2004
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Gracias por tu contestación, pero creo que no lo estoy haciendo bien porque hay algo que falla.

Si despues del dblclick en el dbgrid pongo un Table1.Edit, ya bloqueo ese registro y cuando otro puesto hace otro dblclik en ese registro dice que esta bloqueado. Se trata de saber cuando hago un dblclik (browse) si algun usuario pulso el boton de modificar desde otro puesto(ese si que hace un table1.edit).

Espero tus sugerencias.

Un saludo
Responder Con Cita
  #4  
Antiguo 17-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
la unica forma que yo conozco de hacerlo es como te comente, lo que podrias hacer es lo siguiente:

Si le da click al boton modificar que el registro quede bloqueado.
si le da dobleclick al browser Edita el registro, de alli tienes dos condiciones:

1.- Si te da la excepciones decir que ya esta bloqueado, por lo tanto sacas la informacion que necesitas
2.- Si no te da la excepcion es porq esta libre, entonces lo desbloqueas de nuevo.

Es lo que sugiero fijate a ver si te sirve
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 17-02-2004
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Muchas gracias por tu ayuda.....he aplicado tu sugerencia y me ha funcionado. Gracias por ayuda a los que sabemos menos
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


La franja horaria es GMT +2. Ahora son las 23:23:46.


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