Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   orden en un listado (https://www.clubdelphi.com/foros/showthread.php?t=6005)

vetustas 14-12-2003 20:05:20

orden en un listado
 
Hola,
trabajo con Paradox y delphi 5. Tengo una tabla "alumno" cuyo indice es un código. Tengo también un dbgrid donde muestro la lista de alumnos. Lo que quiero es que el orden de los alumnos venga dado por el nombre y no por el codigo. Cómo hago eso? Es que claro, al insertar por ejemplo un nuevo alumno, me lo coloca en el ultimo lugar de la lista y yo quiero que quede colocado por orden alfabetico. Cómo puedo hacerlo?
Muchas gracias

marcoszorrilla 14-12-2003 20:08:34

Lo primero tendrás que crear si aún no lo tienes un índice por apellidos y activarlo antes de mostrar la rejilla.

MiTabla.IndexName:='Apellidos';

Con esto al dar un alta se colocará en donde le corresponda por apellidos.

Un Saludo.

vetustas 14-12-2003 20:12:12

se me olvido decir que la tabla alumno es una tabla detalle que depende de una tabla curso. En indexname tengo puesto "curso" para que me enseñe los alumnos de cada curso. Entonces...como lo hago? hay alguna forma? :confused:

marcoszorrilla 14-12-2003 20:16:08

Pues mientras sea detalle no porque el índice activo obligatoriamente tiene que ser el que case con la tabla maestra que según dices es código.

Si sueltas la relación maestro detalle, entonces podrías ordenarla como quisieras en este caso podrías simular la relación maestro detalle por ejemplo mediante un filtro.

Un Saludo.

vetustas 14-12-2003 20:19:57

se un poco más concreto porfa :) estoy muy perdida con lo que dices. Entendi eso de que no puede haber otro indice activo que no sea el que lo relacione con la tabla maestro pero entonces como lo hago sin perder esa relación maestro/detalle? cuanto más concreto seas mejor.
muchas graciassss

marcoszorrilla 14-12-2003 20:27:39

Lo que quiero decir es que desactives la relación maestro-detalle y entonces simulas dicha relación mediante un filtro:

MiTablaAlumnos.Filter:='Codigo ='+ QuotedStr(MiTablaMaestraMiCampo.Value)
MiTablaAlumnos.Filtered:=True;

Un Saludo.

__cadetill 14-12-2003 22:22:03

otra opción sería utilizar un Inner Join de SQL para hacer el listado y, en el Order By de la sentencia, poner la ordenación deseada

vetustas 14-12-2003 22:49:18

Cadetill gracias por contestar. Y con eso que me propones tendria que quitar también la relacion maestro/detalle? Me puedes poner especificamente el código sql q tengo que usar?

Muchas gracias

__cadetill 14-12-2003 22:57:21

veamos

necesitas un TQuery (o el componente de conexión que utilices)
luego, en su propiedad SQL pones algo así

Código:

select campo1, campo2,...,campoN
from tabla1 t1 inner join tabla2 t2 on (t2.relacion = t1.relacion)
where
    t1.campoX = loQueSea and/or MasCondiciones


Lepe 16-12-2003 11:44:59

con la venia de cadetill, me permito la osadia de añadir algo más

Código:

select campo1, campo2,...,campoN
from tabla1 t1 inner join tabla2 t2 on (t2.relacion = t1.relacion)
where
    t1.campoX = loQueSea and/or MasCondiciones
ORDER BY t1.codigo, t1.campo1 Asc ,t2.campo2 Desc;

Asc = orden ascendente
Desc = orden descendente

Lógicamente si ordenas por un campo único (como el código) no hará caso al resto de ordenación ;)

Saluditos

__cadetill 16-12-2003 15:25:19

Cita:

Lepe comentó:
con la venia de cadetill, me permito la osadia de añadir algo más
Faltaría más!!! Muy bien añadido ;)


La franja horaria es GMT +2. Ahora son las 12:37:36.

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