Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Ordenar un JvDBGrid

Buenas a todos.

Tengo un JvDBGrid en un form el cual quiero ordenar con un click en el título para lo cual uso el código siguiente:

Código Delphi [-]
 
procedure TF_BuscarCamio.DBGridBuscarTitleBtnClick(Sender: TObject;
  ACol: Integer; Field: TField);
var c: string;
begin
        c:=DBGridBuscar.SelectedField.FieldName;
        OrdenarGrid.Close;
        OrdenarGrid.SQL[1] := 'ORDER BY '+ c;
        OrdenarGrid.Open;
        DBGridBuscar.SetFocus;
end;

Funciona bien, hace el filtro solo DESC pero bueno, algo es algo.

El problema lo tengo en que no se como decirle que el campo activo es la columna donde hago click, y que c debe coger el valor de el título de esta columna, ya que por defecto me filtra por la columna 0 que es donde se situa el cursor al abrir la consulta.

He visto grids que aunque el cursor este situado en el primer registro de la primera columna, al hacer click en el título filtra igual.

Si paso el cursor a otra consulta pues ordena sin problema por esa nueva columna, pero seimpre, repito con algun campo de la columna donde hago el click seleccionado.

Algo se me escapa?

Gracias

Jafera
Responder Con Cita
  #2  
Antiguo 12-05-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jafera, no tengo el jvdbgrid, según lo que veo en tu codigo podrías hacer esta prueba:

Código Delphi [-]
procedure TF_BuscarCamio.DBGridBuscarTitleBtnClick(Sender: TObject;
  ACol: Integer; Field: TField);
var c: string;
begin
  c := Field.FieldName;
  ...................................
  ...................................

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 12-05-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias Caro.

Has dado en el clavo, esto es perfecto.

Ahora solo quedaria como hacer para que un click sea desc y con otro asc

Reipto, gracias

Jafera
Responder Con Cita
  #4  
Antiguo 12-05-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Bueno, no es el jvDBGrid pero las jedi traen el JvUltmGrid ya tiene todo hecho para las busquedas incluso hay un evento que se llama on sort, si usas ADO para la base de datos, solo basta con AdoDataset.Sort = 'Campo ASC'; y listo, con eso ordenas y en el evento del JvUltmGrid te manda el campo y si es ascendente o descendente
Responder Con Cita
  #5  
Antiguo 12-05-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Wink

Hola

yo he utilizado este procedimiento....


en el Evento OnTitleClick del JvDBGrid

pongo esto

Código Delphi [-]
If Column.Title.Caption='RUT' then
   Begin
        IBQ_Select.Close;
        IBQ_Select.SQL.Clear;
        If Sw_1 = 0 Then
           Begin
                IBQ_Select.SQL.Add('Select * from "Proveedor" Order By "Pro_Rut" ASC');
                Sw_1 := 1;
           End
        Else
           Begin
                IBQ_Select.SQL.Add('Select * from "Proveedor" Order By "Pro_Rut" DESC');
                Sw_1 := 0;
           End;
        IBQ_Select.Open;
   End;

Bueno, esto lo hago por cada columna del DBGrid y me lo ordena ya sea ascendente o descendente...

Salu2
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 12-05-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cita:
Empezado por luisgutierrezb Ver Mensaje
Bueno, no es el jvDBGrid pero las jedi traen el JvUltmGrid ya tiene todo hecho para las busquedas incluso hay un evento que se llama on sort, si usas ADO para la base de datos, solo basta con AdoDataset.Sort = 'Campo ASC'; y listo, con eso ordenas y en el evento del JvUltmGrid te manda el campo y si es ascendente o descendente
Hola luisgutierrezb

estaba revisando esto, y podrias poner un ejemplo de esto, ya que no supe dar con esta característica...

Gracias y Salu2
__________________
BlueSteel
Responder Con Cita
  #7  
Antiguo 13-05-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Cita:
Empezado por BlueSteel Ver Mensaje
Hola luisgutierrezb

estaba revisando esto, y podrias poner un ejemplo de esto, ya que no supe dar con esta característica...

Gracias y Salu2
Gracias por contestar.

Yo tampoco lo encontré

Saludos
Responder Con Cita
  #8  
Antiguo 13-05-2011
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimado jafera:

En este link coloqué el código que permite ordenar los grids.

http://www.clubdelphi.com/foros/showthread.php?t=73636

Espero que te sirva.
saludos
Responder Con Cita
  #9  
Antiguo 16-05-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Ahorita no tengo el Delphi a la mano, pero tiene una propiedad de sort, la activas, y en el evento de on sort del grid pones tu codigo, llegando a casa busco algun codigo de ejemplo...
Responder Con Cita
  #10  
Antiguo 17-05-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Despues de unos dias de inactividad, pues me tengo que mudar de domicilio, ha decidido adaptar el codigo de BlueSteel y funciona de mil maravillas.

Hasta me hace ilusión ver que las cosas funcionan bien, es que los maestros sois unos cracks.

Gracias y saludos

Jafera
Responder Con Cita
  #11  
Antiguo 20-05-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Olvide decir que en vez de colocar el código en cada título, uso una variable que me captura el nombre de la columna y con un solo código me sirve para cuantas columnas tenga en el Grid.

Código Delphi [-]
 
procedure TF_BuscarParc.DBGridBuscarTitleBtnClick(Sender: TObject;
  ACol: Integer; Field: TField);
var
c: string;
begin
        c:=Field.FieldName;
        OrdenarGrid.Close;
        OrdenarGrid.SQL.Clear;
        if Sw_1 = 0 then
        begin
                OrdenarGrid.SQL.Add ('SELECT ID_PARC, CODI_PARC, NOM_PARC FROM BOM0003 ORDER BY '+ c + ' ASC');
                Sw_1:=1;
        end
        else
        if Sw_1 = 1 then
        begin
                OrdenarGrid.SQL.Add ('SELECT ID_PARC, CODI_PARC, NOM_PARC FROM BOM0003 ORDER BY '+ c + ' DESC');
                Sw_1:=0;
        end;
        OrdenarGrid.Open;
        DBGridBuscar.SetFocus;
end;

Saludos
Responder Con Cita
  #12  
Antiguo 30-01-2013
pescriba pescriba is offline
Miembro
 
Registrado: may 2003
Posts: 28
Poder: 0
pescriba Va por buen camino
Ordenar un JvDBGrid

Si activamos dgTitleClick en Options y TitleArrow y TitleButtons se mostrará una bonita flecha hacia arriba o hacia abajo en la columna sobre la que hemos hecho clic.

Para averiguar si es hacia arriba o hacia abajo podemos ver la propiedad

SortMarker

que nos indica el estado (smUp, smNone o smDown)

y ahora ya podemos hacer algo como

' ORDER BY ' + Column.FieldName
if SortMarker = smUP + ' ASC'
else if SortMarker = smDown + ' DESC'
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 String Neeruu Varios 2 18-09-2008 18:58:50
jvdbgrid y filas de un color chux Conexión con bases de datos 1 09-05-2006 10:04:39
ordenar un dblookupcombobox tiagor64 Conexión con bases de datos 4 29-06-2005 01:09:29
ordenar registros davidgaldo SQL 2 20-04-2005 15:47:23
ordenar por campos galmacland SQL 0 14-02-2005 17:45:39


La franja horaria es GMT +2. Ahora son las 14:28:08.


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