Estou criando uma tabela temporária utilizando a classe FWTemporaryTable (http://tdn.totvs.com/display/framework/FWTemporaryTable) e nela há o método AddIndex para criar índices.
Gostaria de saber se há alguma maneira de criar um índice decrescente.
Olá.
Ainda não, porém da documento do link que você passou contém a informação
“Indices decrecentes só são permitidos em arquivos DBFNTX.
Indices com padão CDX não são criados em ordem descendente.”
No caso da classe FWTemporaryTable ela cria a tabela temporária diretamente no banco de dados.
Neste caso, creio que não irá funcionar.
Mas você necessita mesmo da criação de um índice assim? Você poderia popular a tabela a partir de um select com order by e caso necessário acessar os dados através de queries.
Caso não seja necessário exibir os dados de forma decrescente, você poderia efetuar o loop começando pelo bottom e indo até o bof, é uma prática pouco comum, porém se você deseja exibir os dados já de forma decrescente, não conheço uma forma de fazer isso além de criar a tabela temporária com o Order By assim como o Jandir já mencionou.
Rodrigo, isso criaria a ordenação na tabela de forma crescente, porém a necessidade é exatamente a contrário, a única forma de fazer o contrário é via query com ORDER BY.
Infelizmente, a Totvs não implementou essa inteligência na função AddIndex, o que seria bem útil ao clicar na coluna da tela ele ordenar de forma crescente e, ao clicar novamente, ele ordenar de maneira decrescente.
Tenho uma tela aqui com criatrab que o cara conseguiu implementar essa lógica com a função descend(), mas quando alterei pra fwtemporarytable, perdi essa ordenação decrescente. Não tem como fazer.
Olha, se você alimenta a tabela buscando as informações com uma query, eu recomendo usar o ORDER BY do SQL e colocar o "DESC", é o jeito mais fácil que eu conheço.
Se tiver duvidas sobre SQL, eu adoro esse site: https://www.w3schools.com/sql/sql_orderby.asp
Eu fiz o seguinte, criei mais um campo na tabela temporária e preenchi o campo com valor inverso (tem a função Inverte() do Advpl), nos campos numéricos, preenchi com sinal invertido.