GARANTIR DESCONTO

Fórum Ordenação de campos ClientDataSet #327812

21/08/2006

0

Bom dia pessoal.

Eu estou com um problema, na minha ordenação, na minha máquina que tem WinXP ela funciona corretamente, mas no Win 2000, alguns campos ele não ordena corretamente.
Alguém sabe o que pode ser? será que falta alguma DLL.

Estou utilizando essa função para ordenar os campos.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
indice: string;
existe: boolean;
clientdataset_idx: tclientdataset;
begin
clientdataset_idx := TClientDataset(Column.Grid.DataSource.DataSet);

if clientdataset_idx.IndexFieldNames = Column.FieldName then
begin
indice := AnsiUpperCase(Column.FieldName+´_INV´);

try
clientdataset_idx.IndexDefs.Find(indice);
existe := true;
except
existe := false;
end;

if not existe then
with clientdataset_idx.IndexDefs.AddIndexDef do begin
Name := indice;
Fields := Column.FieldName;
Options := [ixDescending];
end;
clientdataset_idx.IndexName := indice;
end
else
clientdataset_idx.IndexFieldNames := Column.FieldName;
end;


Blbacelar

Blbacelar

Responder

Posts

21/08/2006

Marco Salles

voce pode ate continuar usando esse código , mas o simples código abaixo não funcionaria ????


procedure TFrmMain.DBGrid1TitleClick(Column: TColumn);
begin
   ClientDataSet1.IndexFieldNames := Column.FieldName;
end;



Responder

Gostei + 0

21/08/2006

Blbacelar

não, pq eu tenho que ordenar por ordem decrescente tb...


Responder

Gostei + 0

21/08/2006

Marco Salles

entendo..

mas tem um detalhe , pelo menos esta no ´livro´ :

[b:106de7dc48]Não é possivel indexar um clientDataset Quando o campo for Calculado , LookUp ou Agregado , quando seu tipo for Blob Ou Memo[/b:106de7dc48]

Se não for o seu caso , voce pode sar tb o codigo abaixo:

var
Campo:String;



procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
   with ClientDataSet1 do
     begin
      if IndexName = ´IndiceDecrescente´  then
        DeleteIndex(´IndiceDecrescente´);
        if campo <> column.FieldName then
         begin
           Campo:=column.FieldName;
           AddIndex(´IndiceDecrescente´,Campo, [ixDescending],campo);
           IndexName := ´IndiceDecrescente´;
         end
      else
        begin
         ClientDataSet1.IndexFieldNames:=Column.FieldName;
         campo:=´´;
        end;
      first;
      end;
end;


Boa sorte.


Responder

Gostei + 0

23/08/2006

Blbacelar

Eu tenho alguns campos calculados, e ele esta ordenando perfeitamente.
Eu tenho Windows XP, mas na maquina que tem Windows 2000, alguns campos não funcionam.


Responder

Gostei + 0

23/08/2006

Marco Salles

Eu tenho alguns campos calculados, e ele esta ordenando perfeitamente.



Não é possivel indexar um clientDataset Quando o campo for Calculado , LookUp ou Agregado , quando seu tipo for Blob Ou Memo


Por gentileza amigo , coloque o codigo simples no OnTitleClick da Grid ...
Click , na coluna que esta um Campo Calculado

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
SeuClientDataset1.IndexFieldNames:=column.FieldName;
end;


[b:d951498a0f]e report para nos o erro que dá[/b:d951498a0f]


Responder

Gostei + 0

23/08/2006

Blbacelar

Cara, ta complicado.

Em alguns campos, que são normais, ´não calculados´, ele também não ordena.

Eu instalei Delphi na máquina que tem Win 2000 pra ver se dava algum erro mas não dá erro nenhum. ele simplismente não ordena.

Ta dificl de eu achar um solução pra isso.


Responder

Gostei + 0

23/08/2006

Marco Salles

Em alguns campos, que são normais, ´não calculados´, ele também não ordena.


ta dificil mesmo ... pq o metodo inicialmente que voce colocou , foi postado aqui no site ha um tempo atras pelo emerson.en .

http://forum.devmedia.com.br/viewtopic.php?t=53308&highlight=indexar+clientdataset&sid=70e9345d8da97e787585b8eee4c5b5c5

O método funciona sem problemas para os campos ditos ´Normais´...

O método que lhe passei , eu o uso e funciona sem problemas para os campos ditos ´normais´

Agora para os campos:
Não é possivel indexar um clientDataset Quando o campo for Calculado , LookUp ou Agregado , quando seu tipo for Blob Ou Memo

[b:1213391df1]Não sou eu quem esta dizendo isso... esta no livro do Guinther : Programação para banco de dados web pag12[/b:1213391df1]

boa sorte...


Responder

Gostei + 0

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

Aceitar