Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #13  
Antiguo 05-01-2016
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 18
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
 



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 10:06:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi