![]() |
Refrescamiento de tablas dentro de una BD
Hola a todos en este gran Foro. Quisiera abrir un tema, el cual se ha tratado bastante pero para mi existen algunas dudas todavía y es como lo indica el nombre de este hilo el refrescamiento de las tablas en una aplicación que se usa en entornos multiusuarios en una red. en particular uso la representacion de mis tablas o consultas en grillas (cxGrid) de las Devexpress 5, pero la representación con uno u otro componente creo que no viene al caso.
el problema es refrescar las tablas cuando se hacen updates en las mismas, ya sea por inserción, edición o eliminación de artículos (registros) para poder reflejar estos cambios en las grillas o secciones de la aplicación que estén abiertas por otros usuarios. En particular uso para una aplicación específica una BD MySQL, entonces a las tablas o consultas le indico la propiedad:
pero esto trae consigo que cada cierto intervalo de tiempo que se da como parámetro la tabla como que se cierra y se abre perdiendo el scroll en la grilla (xcGrid). para contrarestar esto coloco este código en el evento BeforeRefresh de la tabla o consulta:
y en el evento AfterRefreh escribo lo siguiente:
todo esto funciona bien y hace que el scroll en la grilla no se pierda. las preguntas son las siguientes: 1- Existiría un componente DataSet o algo por el estilo donde no sea necesario aplicar esta forma y que los datos se refresquen automaticamente ? 2- en mi caso tengp una duda con las devexpress (cxGrid) y es que cuando tengo varios sublevels ( osea una grilla master y una subgrilla details), cuando se produce el refrescamiento y tenia los detalles expandidos (subgrilla details) estos vuelven a contraerse. Gracias por sun grandes antenciones |
Otra opción es no refrescar las tablas, sino hacer una pequeña consulta a un campo (mucho más rápida que refrescar TODA la tabla) que te diga cuando ha sido la última actualización; De esta forma sabes si debes hacerla o no.
También puedes utilizar Bookmarks para marcar la posición actual. |
Gracias Neftalí por responder, pero podrias ampliarme mas sobre como consultar los campos ?
|
La idea es mantener una tabla que permita saber si debes refrescar o no. Por ejemplo en esa tabla puedes guardar (a través de un trigger o de forma manual) la hora de la ultima modificación sobre cada tabla. Basta con que tenga dos campos, una para el nombre de la tabla y uno para la última modificación.
(1) Cada vez que actualices la tabla, actualizas el campo (trigger) (2) Cada X tiempo consulta desde donde necesites este campo y compruebas si ha cambiado desde la ultimas vez. Si ha cambiado actualizas toda la tabla; Siempre será más eficiente esta pequeña consulta, que actualizar TODOS los registros. |
Gracias por la explicación lo pondré a pruebas
|
La franja horaria es GMT +2. Ahora son las 12:06:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi