Ordenar vária colunas num DBGrid
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
Curtidas 0
Respostas
Wesley Yamazack
16/09/2009
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
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
GOSTEI 0
Rodrigo Lopes
16/09/2009
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
GOSTEI 0
Wesley Yamazack
16/09/2009
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
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
GOSTEI 0
Wesley Yamazack
16/09/2009
Olá, segue abaixo o link do exemplo
http://www.4shared.com/file/133317702/b19bbd23/_2__OrdernarGrid.html
Abraço
Wesley Y
http://www.4shared.com/file/133317702/b19bbd23/_2__OrdernarGrid.html
Abraço
Wesley Y
GOSTEI 0
Rodrigo Lopes
16/09/2009
Wesley,
Muito grato.
[]'s
Rodrigo
GOSTEI 0
Wesley Yamazack
16/09/2009
Por nada amigo, estamos a disposição.
Abraço
Wesley Y
Abraço
Wesley Y
GOSTEI 0