Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ordenar registros de dbgrid de forma acendente o decendente (https://www.clubdelphi.com/foros/showthread.php?t=50118)

thelibmx 08-11-2007 18:30:36

Ordenar registros de dbgrid de forma acendente o decendente
 
Hola amigos estuve buscando un poco en los foros y por mas que busque no encontre algo que me ayudara, tal ves si habia pero se me paso, espero me puedan ayudar o darme alguna pista, veran tengo un dbgrid el cual tengo conectado asi dbgrid-> tdatasource-> ttable-> tdatabase ocupo delphi2006 y mi base de datos es postgre, no me gusta mencionar postgre por que la mayoria cre que es un bicho raro y se espanta, pero postgre es como que un equivalente a mysql, en fin en este caso no es tan importante creo la bd,asi que olviden que escribi postgre.

Bien en mi tabla tengo id_semana,anio,numero_semana y otros datos, la llave principal es id_semana, entonces veran en el dbgrid muestro los siguientes datos, anio numero_semana fecha y otros datos mas
mi tabla mas o menos es asi:
Código SQL [-]
 
|id_semana|   anio   |numero_semana|campox|campox2|
      1          2007            1                  x           x
      2          2007            2                  x           x
      3          2008            1                  x           x
      4          2007            3                  x           x
      5          2008            2                  x           x
      .              .              .                   .           .
     99         2010            9                  x           x ....etc.

lo que yo quiero es que se muestren asi pero en el grid, es decir, que se ordenen por el anio y numero_semana

Código SQL [-]
 
|id_semana|   anio   |numero_semana|campox|campox2|
      1          2007            1                  x           x
      2          2007            2                  x           x
      3          2007            3                  x           x
      4          2008            1                  x           x
      5          2008            2                  x           x
      .              .              .                   .           .
     99         2010            9                  x           x ....etc.

ahora bien, mi problema es que en el dbgrid, me trae los registros tal y como estan en la tabla, lo que yo quiero saber es como ordenar en el dbgrid los registros de manera que me los ordene por año y numero de semana, intente utilizar filter pero no encontre la sintaxys correcta, para que se den una idea de lo que quiero hacer es algo asi se que esa instruccion esta mal escrita pero la escribi asi para que vean que es lo que pretendo hacer:
Código Delphi [-]
DBGrid1.DataSource.DataSet.Filter:='(order by[anio] and [numero_semana]asc o desc)
pero no encuentro la sintaxys o forma correcta de hacerlo, solo quiero que el dbgrid me ordene por anio y numero_semana de forma acendente o desendente, si conocen otra manera les estaria muy agradecido, si se me paso decir algo, pueden preguntarme y lo posteo, gracias por su atencion:confused:

Delphius 08-11-2007 18:38:08

Hola thelibmx,
Te recomendaría que usaras un TQuery. Con el obtendrás más rapidez, además que te evitas estar trayendo toda la tabla entera de una, lo cual te consume mucha memoria. El TTable demora en abrir la tabla y solo es útil con pocos registros.

Con el TQuery puedes lanzar un SQL así:

Código SQL [-]
select * from tabla order by campo1, campo2, ... campoN DESC

Puedes cambiar ASC o DESC del modo que sea necesario.

Saludos,

thelibmx 08-11-2007 19:11:46

pues si con un query se soluciona el problema pero me trae otro
Código SQL [-]
table does not support this operation because it is not uniquely indexed
nose realmente a que se refiera ese mensaje de error, pero suena complicado, me huele a mas problemas que la solucion, tu sabes, sale mas caro el remedio que la enfermedad, lo que pasa es que ya tengo varias cosas programadas y me llevaria tiempo depurarlas y ahorita lo que menos tengo es tiempo jeje,si cambio la forma en que ligo el grid tendria que cambiar mucho codigo que ya tengo, seria mas facil solo ordenar el grid y listo, o el ttable, conoces alguna propiedad como el filter en el cual se pueda ordenar por añio y numero de semana ? :confused: o algo similar


La franja horaria es GMT +2. Ahora son las 03:02:48.

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