Como ordenar um ClientDataSet de forma decrescente? – Show Delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Como ordenar um ClientDataSet de forma decrescente?

 

Para ordenar de forma crescente é relativamente fácil, sendo somente
necessário colocar o campo na propriedade IndexFieldNames do
ClientDataSet.

Porém para ordenar de forma decrescente é um pouco mais complexo,
sendo necessário o uso do IndexDefs.

Para simplificar o processo, foi desenvolvida uma rotina genérica,
para a ordenação do ClientDataSet pelo clique da coluna em um DBGrid.

Neste caso, no primeiro clique ordena de forma crescente e no segundo
clique ordena de forma decrescente.

Veja o exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  vIndice: string;
  vExiste: boolean;
begin
  if ClientDataSet1.IndexFieldNames = Column.FieldName then
  begin
    vIndice := AnsiUpperCase(Column.FieldName + '_INV');
 
    try
      ClientDataSet1.IndexDefs.Find(vIndice);
      vExiste := True;
    except
      vExiste := False;
    end;
 
    if not (vExiste) then
    begin
      with ClientDataSet1.IndexDefs.AddIndexDef do
      begin
        Name := vIndice;
        Fields := Column.FieldName;
        Options := [ixDescending];
      end;
    end;
 
    ClientDataSet1.IndexName := vIndice;
  end
  else
    ClientDataSet1.IndexFieldNames := Column.FieldName;
end;

Veja que é esta linha: Options := [ixDescending];
que faz a ordenação inversa.

Dúvidas ou sugestões, deixe nos comentários do post.

Facebook Comments

Posts Relacionados

  • Anderson Tonini
  • 1.926 views
  • 0 comentários
  • 16 de setembro de 2015

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Ir ao topo

© 2016 Infus Soluções em Tecnologia - Todos os Direitos Reservados