Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-01-2016
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Bloquear registro en edición o borrado

Buen día quisiera poder bloquear un registro por cierto tiempo para un usuario en el momento que este editando un registro o borrándolo para que otro usuario del sistema no pueda realizar ninguna acción sobre este.

Si alguien tiene alguna idea sobre esto y pueda ayudarme se lo agradecería, gracias.
Responder Con Cita
  #2  
Antiguo 05-01-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Un registro? de los de la CPU? Un Record de Delphi?

Danos mas pistas
Responder Con Cita
  #3  
Antiguo 05-01-2016
Reasen Reasen is offline
Miembro
NULL
 
Registrado: dic 2015
Ubicación: Barcelona
Posts: 140
Poder: 9
Reasen Va por buen camino
No entiendo tu pregunta pero si te refieres al editor de registro del sistema y quieres evitar que un usuario edite el registro... Puedes detectar cuando el proceso regedit.exe se abra y cerrarlo.
Responder Con Cita
  #4  
Antiguo 05-01-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Si, realmente el planteo es muy ambiguo.

Supongo que Soa Pelaez se debe referir a bloquear una determinada fila de una tabla... Y de ser así, mínimamente va a tener que especificar que gestor de base de datos y que componentes está utilizando para conectarse a él.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 05-01-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[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
Al igual que a los demás me faltan datos para poder saber con certeza, de qué estamos hablando...

De todas formas, si estamos hablando de registros de Base de Datos, deberías revisar las transacciones.
Poderse hacer, se puede hacer, lo que no se si es adecuado...

¿Qué pasa si alguien se pone a editar y "en mitad" de la edición se va a otro programa o a tomar un café?
__________________
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
  #6  
Antiguo 05-01-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Bloquear?
Responder Con Cita
  #7  
Antiguo 05-01-2016
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Si me faltaron datos por especificar, cuando me refiero a bloquear los registros son en un aplicativo que estoy realizando multiusuario con el gestor de Base de Datos SQL Server.

Si alguien puede orientarme se lo agradecería.
Responder Con Cita
  #8  
Antiguo 05-01-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Soa Pelaez Ver Mensaje
... Base de Datos SQL Server
¿Con qué servidor de sql de bases de datos: MySql, PostgreSql, Firebird, Microsoft Sql, Oracle, Sqlite, etc. ?
¿Y para qué quieres bloquear registros?
Responder Con Cita
  #9  
Antiguo 05-01-2016
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Con qué servidor de sql de bases de datos: MySql, PostgreSql, Firebird, Microsoft Sql, Oracle, Sqlite, etc. ?
¿Y para qué quieres bloquear registros?
El gestor de base de datos es SQL Server 2014, SQL Server Management Studio.
Necesito hacerlo para que un usuario1 no edite un registro que está siendo editado por otro usuario2 sino que al saber esto pueda enviarle un mensaje que esta siendo usado el registro.
Responder Con Cita
  #10  
Antiguo 05-01-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Soa Pelaez Ver Mensaje
El gestor de base de datos es SQL Server 2014, SQL Server Management Studio..
¿Eso es microsoft, no?
Responder Con Cita
  #11  
Antiguo 05-01-2016
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Eso es microsoft, no?
Si exacto. Y trabajo desde delphi con firedac.
Responder Con Cita
  #12  
Antiguo 05-01-2016
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
¿Y para qué quieres hacer explícitamente algo que el motor de bases de datos hace implícitamente? No necesitas "bloquearlo" por que los datos necesarios están en tu cliente y solamente deberías regresar los que cambiaron mediante un UPDATE...

MS SQLServer no es dBase o Paradox, los datos no están "vivos" en tu pantalla.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #13  
Antiguo 05-01-2016
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Supongo que el proceso de edición de ese registro es algo demorado y con alta posibilidad de concurrencia, por eso el deseo de que otros usuarios no puedan editar el mismo registro simultáneamente. Aunque podemos delegar esta responsabilidad a la base de datos, que sabe hacerlo de forma natural, lo cierto es que solo al final, quizás después de haber editado un extenso formulario, obtendremos la excepción indicando que el registro está siendo utilizado por otro usuario, o peor aún, sobreescribiendo la información que otro usuario acaba de actualizar sin que nadie se entere.

Propongo la siguiente solución:

- Adicionar columnas a la tabla a editar que contengan: Estado de edición de registro (Editandose/Disponible), Usuario que está editando el registro y fecha-hora de inicio de la edición.

- a la consulta de selección se le añade el criterio para que solo lea los registros en estado Disponible.

- Cuando se empieza el proceso de Edición, se actualizan las nuevas columnas para indicar que ese registro se está "editando". La sentencia de actualización sería algo como
Código SQL [-]
update tabla_a_Actualizar
set estadoRegistro='E', -- En Edición
     fecha_inicio_edicion = current_timestamp,  
     Usuario_Edicion = @usuario
where ID_Registro = @id_registro
  and estadoRegistro='D'  -- Disponible

Si la Anterior sentencia de actualización actualiza cero filas entonces ese registro está siendo editado y se eleva la correspondiente excepción. Personalmente esto lo haría en un procedimiento almacenado.

- Finalmente cuando se actualiza realmente el registro con los nuevos datos se coloca la columna de EstadoRegistro en estado Disponible.

Otra posible solución sería crear una nueva tabla (tabla de registros en edición o de bloqueos) en donde se registre el nombre de la tabla, el ID de registro que se está editando y demás datos de auditoría. al finalizar el proceso se eliminaría el registro o se colocaría en un estado de terminado.

Última edición por orodriguezca fecha: 05-01-2016 a las 19:56:11.
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
Borrado de registro perillan Conexión con bases de datos 5 19-01-2006 20:10:37
¿Borrado masimo o registro a registro? CHiCoLiTa SQL 0 21-03-2005 16:14:39
No refresca registro borrado noe Firebird e Interbase 2 04-01-2005 19:58:06
Borrado de un registro Dante666 SQL 1 02-11-2004 12:23:56
Borrado de un registro con IBX en Delphi 8 murci Conexión con bases de datos 4 06-02-2004 18:25:14


La franja horaria es GMT +2. Ahora son las 16:19: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