Caros amigos!

Tenho uma procedure que ordena o CDS de acordo com os campos que eu passar no parâmetro. Ele tenta criar o índice. Se já tiver um índice criado, ele monta outro com as mesmas características, só que descendente.

A questão é que não está funcionando direito. Vejam o código. Eu comento onde está o erro.

class procedure TDbUtils.OrderByField(FieldName: string;
  DataSet: TClientDataSet);
var
  ls_index        :string;
  ls_IndexName    :string;
begin
  with DataSet do
  begin
    //Monta nome do Índice
    if Pos(';',FieldName) <> 0 then
      ls_IndexName := Copy(FieldName,1,Pos(';',FieldName)-1)
    else
      ls_IndexName := FieldName;

    if IndexName = 'IDX_'+ls_IndexName then
    begin
      ls_Index := 'IDX_'+ ls_IndexName +'_D';
      IndexDefs.Clear;
      with IndexDefs.AddIndexDef do
      begin
        Name := ls_index;
        DescFields := FieldName;
        Fields := FieldName;
        Options := [ixDescending];
      end;
      IndexName := ls_Index;
    end
    else
    begin
      ls_index := 'IDX_'+ ls_IndexName;
      IndexDefs.Clear;
(*
   
Com esse trecho de código funciona. Ele indexa normalmente.
      with IndexDefs.AddIndexDef do
      begin
        Name := ls_index;
        Fields := FieldName;
      end;
      IndexFieldNames := FieldName;
*)


{ Com esse código aqui não funciona }
      IndexDefs.Clear;
      with IndexDefs.AddIndexDef do
      begin
        Name := ls_index;
        DescFields := '';
        Fields := FieldName;
        Options := [];
      end;
      IndexName := ls_Index;
    end;
  end;
end;


Alguém teria uma sugestão?


Obrigado


Francisco Thiago de Almeida
Enter & Plug Informática
Divisão: Desenvolvimento e Banco de dados
Franca / SP
msn: [EMAIL PROTECTED]
http://enterplug.no-ip.com/sistema_ctrc/

[As partes desta mensagem que não continham texto foram removidas]



--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a