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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2021
opsmc opsmc is offline
Registrado
 
Registrado: may 2007
Posts: 3
Poder: 0
opsmc Va por buen camino
campos calculados NO SON PARA sumar, restar o hacer operaciones básicas.

El problema es que los campos calculados NO SON PARA sumar, restar o hacer operaciones básicas. En mi caso el valor de los campos calculados son datos que no vienen ni siquiera en la misma base de datos. Es por esto que si alguien tiene una idea de como ordenar por uno de esos campos les agradecería muchísimo.

O si alguien conoce en que evento del ADOQuery puedo llamar al

AdoQuery1.Sort := 'Campo1 asc'

Es decir cual es el último evento o disparador que sucede al terminar de formarse el data set.
Responder Con Cita
  #2  
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
Respuesta



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 08:28:42.


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