Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ordenar un ClientDataSet (https://www.clubdelphi.com/foros/showthread.php?t=57600)

enchoneg23 21-06-2008 18:55:26

ordenar un ClientDataSet
 
Hola a todos, estoy manejando delphi 6 con interbase y tengo un problema al tratar de ordenar un ClientDataSet en el cual he Guardado un lista de datos, necesito ordenar el ClientDataSet por dos campos a la vez es decir tengo un campo clientes y un campo estados, entre otros, necesito que me quede ordenado por clientes y a su vez los clientes por el cambio de estado, mostrando todos los estados por los que haya pasado este, de modo que al imprimir un reporte pueda agrupar por clientes y estos ordenados por el sus diferentes Estado, he intentado con la propidad IndexFieldByName('CLIENTE;ESTADO');
pero no he logrado mi cometido, desde ya agradezco sus aportes.

enecumene 21-06-2008 19:00:55

Hola, ¿y por qué usas un query usando la clausula ORDER BY?.

Saludos.

jhonny 21-06-2008 19:30:52

Si de pronto, por cosas de la vida, no puedes usar una sentencia SQL como la que te ha mencionado enecumene, entonces podrías hacerlo de la siguiente forma:

Código Delphi [-]
ClientDataSet1.IndexFieldNames := 'CLIENTE;ESTADO';

Y listo :).

Al González 21-06-2008 20:54:34

¡Hola!

Respecto a la buena respuesta de Jhonny Suárez, cabe mencionar que esa es una de las muchas ventajas del componente TClientDataSet: que puede ordenarse por cualquiera de sus campos con solo especificar el nombre de éstos en la propiedad IndexFieldNames y sin importar de qué índices se disponga en ese momento. :)

Cita:

Empezado por Ayuda de Delphi
Tip: Use IndexFieldNames to create sort orders on the fly at runtime.

Felizmente veo que cada vez hay más foristas usando y preguntando por TClientDataSet. Una maravilla de ingeniería, llevo dos años estudiando su lado VCL y no termino de sorprenderme. Y pensar que lleva mucho más tiempo entre nosotros.

Un abrazo DBClient.

Al González. :)

enchoneg23 23-06-2008 14:28:11

gracias
 
hola a todos gracias por sus aportes, pero como ya les mencione la opcion INDEXFIELDBYNAMES ya la utilize para tratar de ordenar el componente pero sin lograr mi cometido, la verdad no se si es que lo estoy utilizando mal, la indexacion hay que hacerla antes o despues de abrir el componente??

Al González 23-06-2008 15:50:40

Cita:

Empezado por enchoneg23 (Mensaje 295430)
...como ya les mencione la opcion INDEXFIELDBYNAMES ya la utilize para tratar de ordenar...

Lo siento, pero no conozco nada que se llame así.

enchoneg23 23-06-2008 15:55:16

corrijo
 
es IndexFieldNames

jhonny 23-06-2008 15:58:01

Cita:

Empezado por enchoneg23 (Mensaje 295456)
es IndexFieldNames

Y debes asignarlo así:

Código Delphi [-]
ClientDataSet1.IndexFieldNames := 'CLIENTE;ESTADO';

No así ;):

Código Delphi [-]
IndexFieldByName('CLIENTE;ESTADO');

Lo digo porque en el primer POST, dijiste que lo habias hecho de esa forma...

enchoneg23 23-06-2008 16:00:18

hola
 
Gracias por tu aporte, mira si la verdad es que me quedo mal escrito pero ya lo utilize tal como tu me lo indicas y nada, no logro hacerlo que me ordene por ambos, solo me ordena por el primer parametro que introduzco


La franja horaria es GMT +2. Ahora son las 10:07:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi