Fórum Ordenar vária colunas num DBGrid #9343

16/09/2009

0

Senhores, bom dia, Tenho em meu sistema a ordenação dos dados do DBGrid, da seguinte forma. Quando a pessoa clica no titulo da coluna do DBGrid eu refaço a setença SQL acrescentando um ORDER BY pelo nome da coluna (campo). Gostaria de modificar isso da seguinte maneira, quando a pessoa desse um clic no titulo da coluna eu faria a ordenação, exemplo:   SELECT * FROM FUNC ORDER BY CHAPA   Porém se ela apertar a tecla Ctrl e clicar em outro titulo de outra coluna, por exemplo Nome do funcionário, ficasse assim:   SELECT * FROM FUNC ORDER BY CHAPA, NOME   E assim por diante, enquanto ela mantiver a tecla Ctrl pressionada.   Para desfazer a ordenação poderia simplesmente clicar num titulo de outra coluna sem a tecla Ctrl pressionada, nesse caso faria um ORDER BY simples dessa coluna como no primeiro exemplo.   Notando o seguinte, em cada titulo de cada coluna teria que marcar de algum forma, gostaria de negritar o título, trocar a cor e colocar uma sequencia para que a pessoa saiba a ordem que esta sendo feita, exemplo:   Chapa      Nome do funcionário(1)     Salário(2)     Endereço   Nesse caso faria um ORDER BY CHAPA, NOME, SALARIO   Exemplo 2:   Chapa(1)      Nome do funcionário    Salário     Endereço(2)   Nesse caso faria um ORDER BY NOME, CHAPA, ENDERECO     Espero ter sido claro.   Grato   Rodrigo      
Rodrigo Lopes

Rodrigo Lopes

Responder

Posts

16/09/2009

Wesley Yamazack

Olá meu amigo,
  Bom dia, olha eu tenho uma rotina genérica, que trabalha com ClientDataSet, e não como o Script da Query, pois com o ClientDataSet, você já tem os dados em memória, ou seja depois que abrir a tua query, da primeira vez, você não precisa mais usar teu banco, evitando assim consumo na tua rede, pelo trafego dos dados, com o mesmo você trabalha direto em mémoria, muito mais rápido.
   Veja o exemplo, http://www.4shared.com/file/133059736/e1089a4/OrdernarGrid.html, ao clicar nos titulos da grid, verá que ele ira ordenando pela coluna que for clicada, e ao precionar ESC, ele ira remover todos os filtros, e assim filtrar pela coluna que você esta selecionado.

   Espero ajudar.


Abraço

Wesley Y


Responder

Gostei + 0

16/09/2009

Rodrigo Lopes

Wesley,   Agradeço o exemplo usando ClientDataSet, porém esse projeto não usa ClientDataSet, ou seja, não consigo fazer ordenação em memória. Tenho que refazer a SQL mesmo.   Estou procurando usar o ClientDataSet em novos projetos.   Fico no aguardo.   Rodrigo  
Responder

Gostei + 0

17/09/2009

Wesley Yamazack

Olá Amigo,
  Só quero deixar claro que a cada vez que você clicar em uma coluna, se você tiver trazendo um script com muitos dados, toda coluna ele irá executar o mesmo, tornando assim o tráfego bem lento.
  Estou fazendo o exemplo, e logo lhe retornarei.

Abraço

Wesley Y
Responder

Gostei + 0

17/09/2009

Wesley Yamazack

Olá, segue abaixo o link do exemplo
  http://www.4shared.com/file/133317702/b19bbd23/_2__OrdernarGrid.html

Abraço

Wesley Y

Responder

Gostei + 0

17/09/2009

Rodrigo Lopes

Wesley, Muito grato.   []'s   Rodrigo
Responder

Gostei + 0

18/09/2009

Wesley Yamazack

Por nada amigo, estamos a disposição.

Abraço

Wesley Y
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar