FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Actualizacion BD
Hola tengo otro problema.....
Fijense que estoy trabajando con los compomentes de IB, y estoy manejando una base de datos hecha en FireBird, tengo varios clientes que estan haciendo actualzaciones a la base de datos.....pero sucede que esas actualizaciones no las puede ver otro usuario, es decir si un cliente distinto al que hace la actulizacion quiere ver lo que actualizo, no se presenta dicha informacion, se tiene que salir del sistema y volver a entrar para ver las actualizaciones.... Alguien sabe como puedo resolver este problema....que las actualizaciones puedan ser consultadas por otro usuario, sin necesidad de salir y volver a entrar al sistema ?.... Gracias !!!
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#2
|
||||
|
||||
Una opción sería que tengas un botón de actualización o refresco. de esa manera el usuario no tendría necesidad de salir del sistema.
No te consejo un enfoque de refrescado automático, pues imagina que tienes 20, 30 o 100 usuarios concurrentes en la base de datos. se vería horrible un grid moviendose cada n segundos para actualizar el contenido de la tabla. Un mejor enfoque sería que los usuarios seleccionaran un conjunto de opciones y presionaran un botón para ver los registros que con concordaran con las opciones de filtrado. Mi muy particular y humilde punto de vista. Suerte
__________________
Conoce mi blog http://www.edgartec.com |
#3
|
|||
|
|||
Saludos
mmmm refrescado manual ???????????? por supuesto que no es igual o peor a que pollees tu bd cada x tiempo.
En firebird existe una maravilla que se llama eventos, creas un trigger y generas un evento que es detectado por tu aplicacion. en el trigger del digamos After Insert pones como unica instruccion necesaria : POST EVENT 'NOMBRE_EVENTO' y en tu aplicacion en delphi pones un IBEvents y registras el evento 'NOMBRE_EVENTO' en la lista de eventos que detectará dicho componente. Te mencionaría las ventajas de este esquema al de un boton de refrescado, pero creo que saltan a la vista. En evento OnEventAlert del IBEvents detecta cuando se genera alguno de los eventos para los cuales se registró y en ese momento refrescarias tu pantalla. Por cierto doy por echo que si estás usando transacciones correctamente, es decir si haces commit despues de insertar algún regisro y si inicias una nueva transaccion en cada select, sino.......... tienes que hacerlo Última edición por gabrielkc fecha: 26-06-2007 a las 17:47:43. |
#4
|
||||
|
||||
El tema de Eventos (post_event) hay que manejarlo con cuidado, y más en entornos multiusuarios.
Si se tiene muchos usuarios realizando inserciones continuamente, el uso de Eventos puede ser peor que un Timer , imagina solo a 4 personas realizando inserciones a tuti pleni, el 5º usuario recibirá 4 u 8 mensajes en ... ¿menos de 1 minuto? mRoman el hecho es que tendrás que usar un Commit cuando se guarden los cambios y acto seguido cerrar y abrir el dataset. De esta forma siempre tendrás los registros actualizados. Si ahora tienen que salir del programa para ver los cambios, es porque abres los componentes IBX (TIBTables, TIbDataset, etc) al principio del programa y no los cierras hasta salir (o que uses CommitRetaining... hay muchas causas). Tendrás que implementar una filosofía distinta de actuación, y para ello, tendrás que estudiar el tema de Transacciones y concurrencia. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
Hola,
Creo que el problema está en el aislamiento de transacciones. Podrías revisar tu componente tIBTransaction, y configurar la propiedad Params, prueba con esto: read_committed rec_version nowait Un Saludo.
__________________
Maro. OutSourcing de programación con Delphi. |
#6
|
|||
|
|||
Cita:
A mi los eventos me han funcionado perfectamente, de echo debo admitirlo tu comentario me hizo dudar porque estoy teniendo problemas con el servidor y luego de tu comentario quite mis amados eventos y el rendimiento del servidor no mejoró ni un poco. |
#7
|
||||
|
||||
gabrielkc, como bien dices, depende del sistema que se esté haciendo y lo más importante: cómo se usará.
Imagina un programa que almacena las reclamaciones teléfonicas de los usuarios de "Telefonica ADSL" . Si el directivo quiere monitorear en tiempo real las reclamaciones, la filosofía está clara, post_event en cada inserción. Si el directivo quiere ver una "foto fija" en un momento determinado, no se necesita implementar eventos. Son dos filosofías distintas de implementación. Cita:
Volviendo al hilo, la configuración que indica maro es la que uso actualmente, pero no se puede cambiar esos parámetros y esperar que todo funcione a la perfección, debes conocer qué hace cada uno de los parámetros para programar de una forma u otra. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|