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 24-05-2007
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
Ordenar adoquery por nuevo campo calculado

hola a todos, he estado buscando pero no encuentro nada que me sirva sobre el tema, tengo un adoquery donde le he añadido un campo (que lo calculo en el OnCalcFields) es decir, que en el select no está, pero quiero ordenar los resultados del DBGrid por ese resultado, alguien tiene idea?

muchas gracias
Responder Con Cita
  #2  
Antiguo 24-05-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
O sea, que no usas la clausula SELECT, y todo los haces en el evento ONCALCFIELDS, mmmm ya checaste la clausula ORDERBY ?
Responder Con Cita
  #3  
Antiguo 25-05-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
Puedes utilizar:

adoquery1.Sort := 'campo1 asc';
Responder Con Cita
  #4  
Antiguo 25-05-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
porque no pruebas meter el calculo que hacs con los campos en el evento on calc field, meterlo en la consulta select, en caso que lo estes haciendo así.


por ejemplo.

calculas el total, y ordenas por la columna numero cinco.


Código SQL [-]
select id_articulo, nombre, cantidad, precio, (cantidad * precio) 
from articulos
order by 5


esto seria aplciado solo si en tu tabla o consulta select los calculos son a nivel registro.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #5  
Antiguo 25-05-2007
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
viendo lo visto, mejor calcularlo en la consulta y luego ordenar
muxas gracias xlas respuestas!
Responder Con Cita
  #6  
Antiguo 25-05-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
en definitiva en la mejor forma......


así utilizas order by n

donde n, es el numero de la columna calculada.


saludos carnal.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #7  
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
  #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
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 09:30: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