Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 25-01-2021
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola opsmc,

Yo utilizo esto para ordenar cualquier columna aunque no este en el SELECT, mientras este en el DBGrid

Código Delphi [-]
type
  TIDFieldSorted = packed record
    FieldColumn: String;
    FieldSorted: String;
  end;

type
  TfrmForm1 = class(TForm)
    ...
    ...
    ...
  private
    // Columna de ordenación
    PFieldSorted: TIDFieldSorted;
  public
  end;

var
  frmForm: TfrmForm1

implementation

//      FUNCIONE DEVUELVE LA COLUMNA DEL DBGRID PASANDO EL NOMBRE DE LA COLUMNA //

// Devuelve la columna del DBGrid según FieldColumn
function GetGridColumn(Grid: TDBGrid; FieldColumn: String): TColumn;
var
  nI: Integer;
begin
  Result := nil;
  for nI := 0 to Grid.Columns.Count -1 do
    if (Result <> nil) then
      Break
    else
      if (Grid.Columns.Items[nI].FieldName = FieldColumn) then
        Result := Grid.Columns.Items[nI];
end;

// Ya en el DBGridTitleClick, pones esto
procedure TfrmForm1.DBGRid1TitleClick(Column: TColumn);
{$J+}
const
  PreviousColumnIndex : integer = -1;
{$J-}
begin
  if (Column = nil) and (PFieldSorted.FieldColumn = '') then
    Exit;

  if (Column = nil) then
    Column := GetGridColumn(DBGRid1, PFieldSorted.FieldColumn);

  with TCustomADODataSet(DBGRid1.DataSource.DataSet) do
  begin
    if PreviousColumnIndex > -1 then
      DBGRid1.Columns[PreviousColumnIndex].Title.Font.Style :=
        DBGRid1.Columns[PreviousColumnIndex].Title.Font.Style - [fsItalic, fsBold];

    Column.title.Font.Style :=
    Column.title.Font.Style + [fsItalic, fsBold];
    PreviousColumnIndex := Column.Index;

    if (Sort = '') and (PFieldSorted.FieldSorted <> '') then
      Sort := PFieldSorted.FieldSorted
    else
      if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort)= 0) then
        Sort := Column.Field.FieldName + ' DESC'
      else
        Sort := Column.Field.FieldName + ' ASC';

    PFieldSorted.FieldColumn := Column.FieldName;
    PFieldSorted.FieldSorted := Sort;
  end;
end;

end.
Espero que te sirva.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ordenar query por un campo calculado???? mguixot SQL 4 24-10-2012 11:00:36
Pasar un campo calculado a un campo del mismo DbGrid maravert Conexión con bases de datos 3 12-05-2006 00:31:30
Ordenar ADOQuery en Delphi Francisco Rguez Conexión con bases de datos 2 02-08-2005 02:32:54
¿Cuál es el tipo compatible con Number para añadir un nuevo campo calculado de ese t? nuri SQL 2 26-07-2005 11:24:34
Ordenar por un campo calculado IVAND SQL 0 24-11-2004 02:17:28


La franja horaria es GMT +2. Ahora son las 19:41:26.


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
Copyright 1996-2007 Club Delphi