PDA

Ver la Versión Completa : Rxdbgrid


kanyrosana
13-09-2006, 22:50:42
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
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.

;)