Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Rxdbgrid (https://www.clubdelphi.com/foros/showthread.php?t=35559)

kanyrosana 13-09-2006 22:50:42

Rxdbgrid
 
Alguien tiene el código de cómo ordenar un rxdbgrid, he leido que el usuario Cadetill ha publicado algo pero no funcionan los links que aparecen.
lo que necesito es que al hacer click en el titulo de la grilla me ordene por ese campo.

roman 13-09-2006 23:09:03

Realmente no se ordena un DBGrid o RxDBGrid, sino los datos del DataSet asociado. Así que básicamente lo que has de hacer es manejar el evento OnTitleClick (creo que es así) y, basándote en el campo correspondiente, relanzar la consulta SQL (si usas un Query) o activar el índice que corresponda en el DataSet.

// Saludos

kanyrosana 14-09-2006 00:56:51

Gracias por tu respuesta, lo que pasa es que no quiero volver a ejecutar la consulta porque se demora un par de segundos en ejecutarse, por eso queria saber si existe otra forma mas rápida de ordenar los datos del dataset sin tener que relanzar la consulta SQL agregando el order by correspondiente

jachguate 14-09-2006 01:00:09

Eso depende del dataset que uses.

Podrías intentar simplemente establecer el valor de la propiedad IndexFieldNames. Tené en cuenta que si los registros son muchos, esto puede tener un costo de tiempo mucho mas alto que reabrir la consulta.

Hasta luego.

;)

roman 14-09-2006 01:07:30

Cualquier reordenamiento que implique una comunicación con el servidor demorará un poco. Pero siempre puedes interponer un ClientDataSet entre el DataSet original y el DBGrid. El reordenamiento en el ClientDataSet será muy rápido al tener todos los registros en memoria. Pero esto obviamente puede ser contraproducente en el gasto de recursos.

// Saludos

jachguate 14-09-2006 01:18:08

Cita:

Empezado por roman
El reordenamiento en el ClientDataSet será muy rápido al tener todos los registros en memoria.

Recordá que un clientdataset puede ser configurado para traer solo un puñado de registros al abrirse, independientemente del resultado completo de la consulta. Si el resultado de esta fuese muy grande, un reordenamiento del ClientDataSet también sería costoso en tiempo, pues como ya ha dicho roman, para reordenarse este tiene que disponer de todos los datos en memoria.. y eso puede ser muy pesado en tiempo (obtener primero todos los registros).

Como anécdota curiosa... tengo un proceso donde un ClientDataSet, cuando se le pide traer todos los registros de una consulta, tarda horas en obtener unos 390,000 registros de una ubicación a 200 Km. de aquí, con un enlace punto a punto mas o menos decente... (no preocuparse, es para procesamiento automatizado, nada donde intervenga la mano humana :D)

En local es una operación que tarda apenas unos minutos...

¡Te imaginas un reordenamiento sobre este ClientDataSet cuando solo ha traido los primeros 200 registros (que es al ritmo que los trae regularmente)!

Saludos.

;)


La franja horaria es GMT +2. Ahora son las 10:16:00.

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