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:
Código Delphi
[-]
Tabla.Options.Autorefresh := true;
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:
Código Delphi
[-]
fila_actual := DataSource.DataSet.Recno;
DataSource.Dataset.DisableControls;
y en el evento AfterRefreh escribo lo siguiente:
Código Delphi
[-]
DataSource.Dataset.Recno = fila_actual;
DataSource.Dataset.EnableControls;
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