Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 26-09-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por seoane Ver Mensaje
Si, soy humano ( ya te pillare preguntando sobre la API )

¿Que os parece esta idea?

Cuando hago una modificación capturo el error que se produce, aviso al usuario y refresco los datos. Además coloco un botón que permita actualizar los datos, para que el usuario pueda obtener información actualizada cuando lo desee.
Supongo que te refieres a que cuando el usuario graba (post), capturas el error y haces lo demás...

y si es un registro grande, que el usuario se ha tomado media hora para modificarlo, luego le informas que todo su trabajo se ha ido al garete...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #22  
Antiguo 26-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por ArdiIIa Ver Mensaje
Supongo que te refieres a que cuando el usuario graba (post), capturas el error y haces lo demás...

y si es un registro grande, que el usuario se ha tomado media hora para modificarlo, luego le informas que todo su trabajo se ha ido al garete...
Son registros pequeños, con unos pocos campos ¿te parece mal la idea?
Responder Con Cita
  #23  
Antiguo 26-09-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por seoane Ver Mensaje
Son registros pequeños, con unos pocos campos ¿te parece mal la idea?
Que me va a parecer mal....

Pero al márgen del refresco de la tabla y bajo esas circunstancias, no te cuesta ningún trabajo meter un evento antes de modificar y que ese evento verifique que efectivamente ese registro existe en verdad.
Desde ese evento haces un pequeño Query preguntando Select registro Where ID = al que el usuario quiere modificar
Si existe, procedes
si no existe le avisas y refrescas...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #24  
Antiguo 26-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Entonces Ardilla, si te entiendo bien, sugieres que ademas de capturar el error realice una comprobacion antes de empezar para que el usuario no trabaje de mas ¿correcto?
Responder Con Cita
  #25  
Antiguo 26-09-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Por cierto, ya sería mucha casualidad que el servicio borrara el registro que el usuario está modificando, no ?
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #26  
Antiguo 26-09-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por seoane Ver Mensaje
Entonces Ardilla, si te entiendo bien, sugieres que ademas de capturar el error realice una comprobacion antes de empezar para que el usuario no trabaje de mas ¿correcto?
Exacto, eso quiero decir.
Que te asegures que el registro a modificar, existe en la BD
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #27  
Antiguo 26-09-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo también me inclino por comprobar antes si se ha modificado/eliminado el registro.
El post_event, en según qué condiciones, puede ser contraproducente.



Edito: Tendrás que "ver" qué hay en el registro antes de editarlo por el usuario, por si se ha modificado,
En caso de haberlo borrado el "otro" programa, no hay problema, dará error al intentar borrar algo que no existe, cuestión de controlarlo en un típico try except y presentarle el mensaje oportuno.

Última edición por Casimiro Notevi fecha: 26-09-2007 a las 19:32:50.
Responder Con Cita
  #28  
Antiguo 26-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Bueno, si nadie tiene objeciones lo voy a montar así:

- El usuario indica que quiere modificar un registro.
- Compruebo los cambios en el registro, y si ha cambiado aviso al usuario.
- Actualizo el registro.
- Capturo los posibles errores, y si se producen, actualizo y le indico al usuario que lo vuelva a intentar.

Muchas gracias a todos
Responder Con Cita
  #29  
Antiguo 26-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pregunto IB, no permite transacciones?
Código Delphi [-]
 DataModule1.AC1.BeginTrans;
// lo que se va ha hacer
DataModule1.AC1.CommitTrans;
//y si hay algun problema se crea una Exception
on E:Exception do DataModule1.AC1.RollbackTrans;
En ese orden.
Solo pregunto, porque cuando se hacen este tipo de cosas, se pueden perder datos, me parece.
Saludos
Responder Con Cita
  #30  
Antiguo 26-09-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Se me ocurre que podrían abrirse las tablas con la propiedad Exclusive = True, mantenerlas cerradas y abrirlas solo cuando se vayan a modificar. Entonces el programa que no tiene prioridad para modificar las tablas (no sé cual de los 2 es) primero comprueba si ya están usándose, y si es así intenta más tarde, cuando el que tiene prioridad haya terminado de hacer los cambios y haya cerrado las tablas.
Responder Con Cita
  #31  
Antiguo 27-09-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
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
Cita:
Empezado por seoane Ver Mensaje
- El usuario indica que quiere modificar un registro.
- Compruebo los cambios en el registro, y si ha cambiado aviso al usuario.
- Actualizo el registro.
- Capturo los posibles errores, y si se producen, actualizo y le indico al usuario que lo vuelva a intentar.
Bueno, llego tarde...

En nuestro caso, utilizamos un par de campos extra en la tabla para comprobar los cambios.
TimeStamp y UserUpdate, que permiten saber si se ha modificado desde la última lectura y quien lo ha hecho.
Realizamos la consulta antes de actualizar para comprbar si los valores de memoria son iguales a los de la tabla.
Lectura y actualización en la misma transacción.
Creo que algo habíamos hablado aquí, aquí y aquí.
__________________
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
  #32  
Antiguo 27-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Bueno, llego tarde...
De ningún modo, como ya dije, en estas labores soy un novato y cuantas mas opiniones tenga de gente con experiencia mejor.

El problema mas grave era que el servicio borraba registros, y el usuario no lo sabia e intentaba modificarlos. Así que ahora antes de modificar nada, compruebo que el registro sigue ahí (de hecho actualizo los datos), y parece que con eso es suficiente por ahora.

Muchas gracias
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
modificar un mismo registro en varias tablas kryna Conexión con bases de datos 1 18-03-2005 16:00:34
2 Usuarios Sobre El Mismo Registro AGAG4 Conexión con bases de datos 5 06-09-2004 16:47:36
Usando el mismo Registro AGAG4 SQL 0 17-08-2004 20:33:42
Dos aplicaciones usando el mismo puerto DarkByte Internet 6 28-06-2004 16:40:52
repetir el mismo registro empty Impresión 3 13-04-2004 16:54:19


La franja horaria es GMT +2. Ahora son las 10:53:04.


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