Olá amigos
Boa Tarde!
Gostaria de saber como executar um comando onde eu crio um índice, de um campo numérico, de tal forma que fique
em ordem decrescente, ou seja do maior para o menor.
Tenho um banco onde eu gero uma media, gostaria que esse banco ficasse por ordem de media, do maior para o menor.
Atenciosamente,
Criar indices
Moderador: Moderadores
- Ricardo Sales Ribeiro
- Usuário Nível 3

- Mensagens: 279
- Registrado em: 13 Jul 2004 18:06
- Localização: Fortaleza-Ceara
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Criar indices
Olá!
Precisa usar a função Descend()
Precisa usar a função Descend()
Código: Selecionar todos
REQUEST DESCEND
FUNCTION Main()
Indexar()
USE Tabela Shared New
Tabela->( DbSetIndex( "Tabela" ) )
// Usar a função Descend() na pesquisa também
Tabela->( DbSeek(Descend( 876 ) ) )
? Tabela->Media
Tabela->( DbCloseArea() )
Return
//----------------------------------------------
FUNCTION Indexar()
USE Tabela Exclusive New
// Usar a função Descend() para criar indice decrescente
Index On Descend(media) To Tabela
Tabela->( DbCloseArea() )
Return
//----------------------------------------------[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Ricardo Sales Ribeiro
- Usuário Nível 3

- Mensagens: 279
- Registrado em: 13 Jul 2004 18:06
- Localização: Fortaleza-Ceara
Criar indices
Pessoal, a solucão é colocar "REQUEST DESCEND" no ínício ?
Se SIM, por tabela, a solução para quem usa CDX seria a abaixo ?
REQUEST DBFCDX ou IDX ou NTX - Depende do uso
RDDSETDEFAULT("DBFCDX")
REQUEST DESCEND
So assim a função de indexar por ordem inversa vai funcionar.. caso contrario nao se consegue.
Ou DBSetOrder->
Se SIM, por tabela, a solução para quem usa CDX seria a abaixo ?
REQUEST DBFCDX ou IDX ou NTX - Depende do uso
RDDSETDEFAULT("DBFCDX")
REQUEST DESCEND
So assim a função de indexar por ordem inversa vai funcionar.. caso contrario nao se consegue.
Ou DBSetOrder->
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Criar indices
Olá!
Sim Eros, tudo que você escreveu é verdadeiro.
A função Descend(), quando usada, é incorporada como atributo do arquivo de índice, para possibilitar a execução de REINDEX. Na hora da pesquisa é obrigatório utilizá-la, se você criou um índice usando ela. Tudo isto contribui para a degradação da performance do aplicativo pois leva mais tempo a cada atualização de índices (por exemplo, após incluir ou excluir registros).
Se precisar de ordenações descendentes, o ideal é usar a cláusula DESCENDING do comando INDEX ON: Neste caso, Descend() também é incorporada como atributo do arquivo de índice, para possibilitar a execução de REINDEX, mas a atualização de índices é mais rápida.
Fonte.
Sim Eros, tudo que você escreveu é verdadeiro.
A função Descend(), quando usada, é incorporada como atributo do arquivo de índice, para possibilitar a execução de REINDEX. Na hora da pesquisa é obrigatório utilizá-la, se você criou um índice usando ela. Tudo isto contribui para a degradação da performance do aplicativo pois leva mais tempo a cada atualização de índices (por exemplo, após incluir ou excluir registros).
Se precisar de ordenações descendentes, o ideal é usar a cláusula DESCENDING do comando INDEX ON:
Código: Selecionar todos
USE Customer NEW
INDEX ON Name TO Customer DESCENDINGFonte.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Criar indices
O REQUEST só é necessário se uma função NÂO está explícita e então vc precisa "request" (requerer) ao linkador para a incluir.
No exemplo abaixo:
1. se vc guardar os parâmetros dentro de uma string - pra usar depois a "&", a linkedição não vai considerar DESCEND(), que está "escondida" dentro da string, e vai dar pau no run time; 2. se DESCEND() estiver explícito, não precisa do REQUEST.
No exemplo abaixo:
1. se vc guardar os parâmetros dentro de uma string - pra usar depois a "&", a linkedição não vai considerar DESCEND(), que está "escondida" dentro da string, e vai dar pau no run time; 2. se DESCEND() estiver explícito, não precisa do REQUEST.
Código: Selecionar todos
* 1
request descend
indice="anome+descend(dtos(odata))"
index on &indice to lixo
* 2
* request descend // não precisa
inde on anome+descend(dtos(odatv))+strzero(ovalo,15,2) to blabla