Fórum ClientDataset #349363
21/11/2007
0
Abs
Felipeiw
Curtir tópico
+ 0Posts
21/11/2007
Luciano.lirio
depois cliente novamente no componente ClienteDataSet na propriedade [b:ecb402051b]IndexName[/b:ecb402051b] informe o nome do indice que vc criou.
Att,
Luciano
Gostei + 0
22/11/2007
Fabiano Góes
e como ordernar pelo click do titulo da coluna da grid, mais verificando se a coluna está ordanada Ascendente quando clicar ordenar Descendente e vise-versa ?
Gostei + 0
22/11/2007
Fabiano Góes
bom, criei 2 indices descendentes um pro campo ID e outro ro campo NAME
então faço assim:
procedure TForm1.gridClientesTitleClick(Column: TColumn); begin if Column.FieldName = ´NAME´ then if (cdsClientes.IndexName = ´cdsClientesIndexNAMEDesc´) or (cdsClientes.IndexFieldNames <> ´NAME´) then cdsClientes.IndexFieldNames := ´NAME´ else cdsClientes.IndexName := ´cdsClientesIndexNameDesc´ else if Column.FieldName = ´ID´ then if (cdsClientes.IndexName = ´cdsClientesIndexIDDesc´) or (cdsClientes.IndexFieldNames <> ´ID´) then cdsClientes.IndexFieldNames := ´ID´ else cdsClientes.IndexName := ´cdsClientesIndexIDDesc´; end;
sugestões para melhorar o código serão bem vindas.
Gostei + 0
22/11/2007
Luciano.lirio
acho que o código abaixo vai funcionar da maneira que vcs querem.
procedure TForm1.DBGrid1TitleClick(Column: TColumn); var Indice: String; FlagDesc: Boolean; begin // Coloquei o Random para mudar o nome do indice, se colocar o nome do indice fixo não funciona Indice := ´Indice´+IntToStr(Random(9999)); // Verifica se o campo anterior estáva em modo Ascendente ou Descendente FlagDesc := (ClientDataSet1.IndexDefs.Count > 0) and (ixDescending in ClientDataSet1.IndexDefs[0].Options); // Limpa o indice anterior ClientDataSet1.IndexDefs.Clear; case FlagDesc of True: ClientDataSet1.IndexDefs.Add(Indice,Column.FieldName,[]); False: ClientDataSet1.IndexDefs.Add(Indice,Column.FieldName,[ixDescending]); end; ClientDataSet1.IndexName := Indice; end;
Gostei + 0
22/11/2007
Luciano.lirio
acho que o código abaixo vai funcionar da maneira que vcs querem.
[b:9df6fcef9a]ESTE ÚLTIMO POST COLOCA EM ORDEM ASCENDENTE QUANDO MUDA A COLUNA E SÓ VAI COLOCAR NA ORDEM DESCENDENTE SE CLICAR NOVAMENTE NA MESMA COLUNA.[/b:9df6fcef9a]
procedure TForm1.DBGrid1TitleClick(Column: TColumn); var Indice: String; FlagDesc: Boolean; begin // Coloquei o Random para mudar o nome do indice, se colocar o nome do indice fixo não funciona Indice := ´Indice´+IntToStr(Random(9999)); // Verifica se o campo anterior estáva em modo Ascendente ou Descendente FlagDesc := (ClientDataSet1.IndexDefs.Count > 0) and (ixDescending in ClientDataSet1.IndexDefs[0].Options); // Se a coluna do dbgrid força a Ascendente if (ClientDataSet1.IndexDefs.Count > 0) and (ClientDataSet1.IndexDefs[0].Fields <> Column.FieldName) then FlagDesc := True; // Limpa o indice anterior ClientDataSet1.IndexDefs.Clear; case FlagDesc of True: ClientDataSet1.IndexDefs.Add(Indice,Column.FieldName,[]); False: ClientDataSet1.IndexDefs.Add(Indice,Column.FieldName,[ixDescending]); end; ClientDataSet1.IndexName := Indice; end;
Gostei + 0
22/11/2007
Macario
Espero que este topico do nosso colega emerson_en ajude voces como me ajudou.
[url=http://forum.devmedia.com.br/viewtopic.php?t=53308&start=0&postdays=0&postorder=asc&highlight=ordemurl]Ordenar ClientDataset (IndexFieldNames) em ordem decrescente
[/url]
Abraço. 8)
Gostei + 0
22/11/2007
Fabiano Góes
valeu pela atenção, testei os dois códigos e serviram perfeitamente pra minha necessidade.
Obrigado !!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)