Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2007
uper uper is offline
Miembro
 
Registrado: abr 2004
Posts: 296
Poder: 21
uper Va por buen camino
Como bloquear registros sin usar campos persistentes

saludos, no se como programar esto de los bloqueos con sql server 2000,
pues no manejo campos persistentes, y lo que prendo hacer es que si alguien quiere modificar un registro o dos usuarios estan en el mismo,
se bloque el registro, y mandarle un mensaje al otro usuario diciendole que esta ocupado el registro, se que el componente AdoQuery tiene algo tipo de bloqueo que por lo gral. es optimista.
explico como lo ve el usuario:

busca un regsitro ya sea por id o nonbre en el caso de la tabla de clientes, cuando le da el resultado, le da el boton de editar, pero simplemente lo que hago como programacion es pasar los datos a controles estandar (nada de campos persistentes), el usuario corrige los datos y guarda el registro con el boton de guardar en es momento, cierro la tabla y me guardo el ID para hacer una actualizacion con el update.

Como podria implementarse que al dar un click en el boton de modificar se bloque el registro y se desbloque al guardar y como lo mencione se pueden mandar mensajes a otro user que quiera intentar editar el mismo registro.

Les agradesco
gracias.
Responder Con Cita
  #2  
Antiguo 06-05-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por uper
Como podria implementarse que al dar un click en el boton de modificar se bloque el registro y se desbloque al guardar y como lo mencione se pueden mandar mensajes a otro user que quiera intentar editar el mismo registro.

Les agradesco
gracias.
Hasta donde yo sé los bloqueos se manejan a través de transacciones, es decir, es la misma transacción la encargada de hacer el bloqueo del registro, puedes consultar la ayuda del SQL Server, seguro que algo sale allí.

Con respecto a lo del mensaje, no tengo la menor idea....


Hasta Luego .-
__________________
No todo es como parece ser...
Responder Con Cita
  #3  
Antiguo 11-07-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Pues debes iniciar una transacción cuando pretendan editar el registro.
Luego haces un update sencillo para que se bloquee, por ejemplo:
Código:
AdoConnection1.BeginTrans;
with AdoQuery1 do
begin
  SQL.Close;
  SQL.Clear;
  SQL.Add('update Clientes');
  SQL.Add('set Id_Cliente = Id_Cliente');
  SQL.Add('where Id_Cliente = ' + IntToStr(iCliente));
  ExecSQL;
end;
Con esto garantizas que se genera un bloqueo, y a los demás usuarios que intenten entrar a modificar este registro, les marcará el error de "tiempo de espera" mientras no hayas confirmado o cancelado la transacción.

Luego, al momento de guardar, haces tus updates yliberas el bloqueo (confirmando la transacción):
Código:
with AdoQuery1 do
begin
  SQL.Close;
  SQL.Clear;
  SQL.Add('update Clientes');
  SQL.Add('set Nombre = :Nombre,');
  ...
  SQL.Add('where Id_Cliente = ' + IntToStr(iCliente));
  ExecSQL;
end;

AdoConnection1.CommitTrans;
El inconveniente es que, si el usuario da click al botón de "modificar" y se va y se toma un café (o hay quienes duran 30 minutos cuando van al baño) el bloqueo estará ahí, esperando a que el usuario lo libere o alguien con acceso al SQL Server lo mate. Sin embargo, eso es lo que hay de bloqueos para SQL Server.
__________________
Tiempo y ocasión acontecen a todos!
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
Bloquear y Desbloquear registros php+Mysql enecumene PHP 2 16-03-2007 19:41:44
Bloquear registros en Sql2000 RJF Varios 0 18-01-2006 18:05:42
¿cómo puedo hallar el mínimo de la diferencia de 2 campos de todos los registros? nuri SQL 8 28-07-2005 18:34:57
¿Bloquear registros en tablas foxpro 2.6? ALMERA Conexión con bases de datos 0 25-03-2004 11:42:49
Añadir campos persistentes en tiempo ejecucion Firibiri Conexión con bases de datos 3 22-12-2003 11:43:08


La franja horaria es GMT +2. Ahora son las 21:01:41.


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