Delphi - Reordenar un dbgrid

 
Vista:

Reordenar un dbgrid

Publicado por Sergio (20 intervenciones) el 08/02/2005 14:50:54
Tengo una serie de formularios herederos de una plantilla que contiene una dbgrid enlazada a una base datos. Necesito que cuando un usuario haga click en una columna el contenido se reordene en funcion de esa columna. ¿Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Reordenar un dbgrid

Publicado por Delfino (4 intervenciones) el 08/02/2005 17:59:45
El DBGrid no se puede ordenadr, se tiene q ordenar el dataset, si usas un dataset sql puedes cerrarla y cambiar la sentencia order by..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Sergio (20 intervenciones) el 08/02/2005 21:38:14
El problema es que la tabla no esta enlazada a una consulta sino a una ADOtable. ¿Tengo que cerrar el datasource y volver a abrirlo? ¿La ordenacion se hara desde ahi? Si es asi ¿en que evento puedo capturar el nombre del campo al hacer click sobre la rejilla?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Dr Juzam (821 intervenciones) el 08/02/2005 21:50:04
Se puede hacer de la siguiente manera (usando un ADOTable): El campo IndexFieldNames ordena la tabla. Ahora, sólo debemos decirle que cabecera ha pulsado el usuario:

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
ADOTable1.IndexFieldNames:=Column.FieldName;
end;

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Delfino (1216 intervenciones) el 10/02/2005 18:15:45
En el click sobre el grid por ejemplo;
grid.SelectedField.Fieldname;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Sergio (1 intervención) el 10/02/2005 20:50:13
Perfecto, he probado con el indexfieldname y ha funcionado. No ha hecho falta cerrar y abrir. La unica pega es que no tengo muy claro como invertir el orden si el comun.fieldname es igual al indexfieldnames. Gracias a todos.
¿teneis alguna idea sobre como cambiar el order by de una tabla sobre una AdoTable ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Dr Juzam (821 intervenciones) el 10/02/2005 22:30:34
Para ordenar descedentemente
ADOTable1.IndexFieldNames:=Column.FieldName+ ' DESC';

Y ascendentemente (si no pones nada, se toma por defecto ascendentemente):
ADOTable1.IndexFieldNames:=Column.FieldName+ ' ASC;

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Sergio (20 intervenciones) el 10/02/2005 22:35:33
Gracias de nuevo.
Lo probare de inmediato.
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reordenar un dbgrid

Publicado por Elena (330 intervenciones) el 11/02/2005 14:02:51
Si te está costando trabajo todo esto, puedes conseguir los componentes developer express que traen unos grids magníficos que te permiten ordenar por cada columna al hacer clic sobre ella, filtrar datos, totalizar, etc. Te los recomiendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar