![]() |
Ordenar conjunto de datos
Hola todos:
Realizo una consulta sobre el servidor (compleja por cierto) y me gustaria que al hacer click sobre el titulo de la columna en un dbgrid me ordene los datos por el campo referente a esta. Por ahora estoy trabajando con el evento "OnTitleClick" del DBGrid y hago mas o menos esto: consulta.close; consulta.sql.clear; consulta.sql.add('select campoa, campob, campoc, campod '); consulta.sql.add('from mitabla '); consulta.sql.add('order by '+Column.Title.Caption); consulta.open; Me parece feo por que cada vez que se quiere ordenar por un campo difernete hay que lanzar la consulta al servidor. Existe alguna forma de ordenar el conjunto de datos sin necesidad de volver a lanzar la consulta al servidor? Gracias. |
Específicamente en Interbase no sé. Sin embargo puedes, si los conjuntos resultantes no son extremadamente grandes, utilizar client datasets:
Agregas el paquete MyBase a tu proyecto y añades componentes TDataSetProvider y TClientDataSet. Enlazas el provider al componente query que utilices mediante su propiedad "dataset" y el clientdataset al provider mediante su propiedad "ProviderName". Finalmente enlazas un datasource al clientdataset y el dbgrid a este datasource: Query<-Provider<-ClientDataSet<-DataSource<-DBGrid Esto mostrará los datos del query en la rejilla. Como el ClientDataSet guarda los datos en memoria puedes reordenar por cualquier columna (incluso si no tienes definido un índice para ella) mediante su propiedad "IndexFieldNames" sin necesidad de volver a consultar al servidor. Incluso puedes ordenar por varios campos. // Saludos |
La franja horaria es GMT +2. Ahora son las 01:59:37. |
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