Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ayuda Urgente, Por favor. Tarda mucho en traer los datos. (https://www.clubdelphi.com/foros/showthread.php?t=43919)

avmm2004 27-05-2007 19:42:34

Cita:

Empezado por Paradiso
Hola a todos.
Seriamente.
Delphi 7 + Interbase 6.5 + DbExpress + DevExpress. ........

Independientemente de la consulta, no se si has tenido en cuenta lo siguiente:

- Utilizas devexpress (el grid supongo) ¿ No sabes que el grid de devexpress carga todos los datos en memoria antes de mostrarte la primera fila ?
Pues una carga de 34.000 registros en el grid antes de mostrarte la primera fila es brutal.

- Has pensado en la posibilidad de filtrar el numero de filas a devolver.???

- Has usado la propiedad disablecontrols para esa carga masiva en el datasource ??

- Has usado la propiedad beginupdate y endupdate del cxgrid ??

Al González 30-05-2007 17:15:09

Paginación en segundo plano
 
¡Hola a todos!

Cita:

Empezado por Neftali
...Piensa que los Grids de las DevExpress en su modo de funcionamiento estandard ("el bonito" que permite agrupar,ordenar, filtrar,...) traen todos los registros a memoria y los cargan en el Grid.

Cita:

Empezado por Neftali
...el Grid de la DevExpress puede cambiar el modo de funcionamiento para no traer todos los datos; Basta con cambiar la porpiedad GridMode; El problema es que en ese modo de funcionamiento pierdes determinadas propiedades del Grid (ordenaciones, Agrupaciones, totales,...)

Cita:

Empezado por avmm2004
...Utilizas devexpress (el grid supongo) ¿ No sabes que el grid de devexpress carga todos los datos en memoria antes de mostrarte la primera fila ?
Pues una carga de 34.000 registros en el grid antes de mostrarte la primera fila es brutal...

Totalmente de acuerdo, pero sugiero utilicen el término rejilla (que es la traducción más formal y aceptada de grid).

Precisamente esas vicisitudes son las que me llevaron a buscar la paginación en segundo plano. Estoy por reanudar ese caso y aún no tengo clara la forma exacta en que lo resolveré, de hecho todavía considero la posibilidad de usar consultas TOP / FIRST o filtros Where. Os aconsejo sobremanera echarle un vistazo y les agradezco cualquier recomendación. Es prácticamene el mismo problema de Paradiso, pero visto desde una óptica optimista. ¿Podrá realizarse?

Un abrazo posible.

Al González. :)

roman 30-05-2007 17:31:05

Bueno Al, yo creo que la respuesta estándar a este tipo de cuestiones ya la sabes: no mandar traer 34,000 registros. Aunque al cliente le parezca necesario, la verdad es que no necesita 34,000 registros y jamás los va a revisar todos. Sin embargo, no me lo tomes a mal, pero en ese hilo que mencionas, desde un principio cancelaste la respuesta estándar:

Cita:

Empezado por Al González
Aclaro que no me interesa discutir el asunto del consumo de recursos, las reglas de los cánones y todo lo que dice la literatura tradicional. He evaluado el costo-beneficio de cargar toda la tabla en memoria, y, para los propósitos específicos de la aplicación, veo que vale la pena (aún si tuviese el doble de registros).

:rolleyes: :p

// Saludos

Al González 30-05-2007 18:13:03

No creas, ahorita que estaba en la ducha, me vinieron a la mente algunas reflexiones. Se me ha ocurrido traerme sólo los 100 registros con fecha de modificación, búsqueda o utilización más recientes. Y ya cuando el cliente quiera toda la tabla, digamos para exportarla a Excel, entonces darle otro mecanismo para esa operación que no interfiera con las operaciones cotidianas de la interfaz de usuario.

Creo que debo bañarme más seguido. :D

De todas maneras sigo receptivo a sus recomendaciones y descancelo la cancelación referida. :)

Un abrazo fresco.

Al González. :)

Edito:
P.D. Y es que lo de la paginación de segundo plano, quizá no sea un terreno que deba descartarse, por lo menos para experimentación. Lograrlo podría ofrecer nuevos horizontes en materia de interfaces de usuario. Algo así como manejar una base de datos "en vivo" (pero quizá en otro momento, tal experimento sería un proyecto en sí mismo).

xander 30-05-2007 18:43:41

Cita:

Empezado por Al González
No creas, ahorita que estaba en la ducha, me vinieron a la mente algunas reflexiones. Se me ha ocurrido traerme sólo los 100 registros con fecha de modificación, búsqueda o utilización más recientes. Y ya cuando el cliente quiera toda la tabla, digamos para exportarla a Excel, entonces darle otro mecanismo para esa operación que no interfiera con las operaciones cotidianas de la interfaz de usuario.

Echate un clavado en los fuentes de IBObjects... ahi ya es chiste viejo todo eso que mencionas... precisamente es una de las cosas que lo hacen a mi parecer la mejor conectividad en Cliente/Servidor... optimiza muchisimo el tráfico en la red usando técnicas muy poderosas, flexibles y sencillas.

xander 31-05-2007 04:02:37

No recordaba donde habia visto esto, pero por fin di con el enlace:

Esta es una característica sumamente útil en ambientes cliente/servidor... aqui se explica como usar el DML Caching con IBObjects... para muestra, un botón...


La franja horaria es GMT +2. Ahora son las 04:08:33.

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