Página 1 de 1

Um pequeno abacaxi pra quem sabe! -> indexação

Enviado: 16 Jun 2005 02:18
por Darlan
Seguinte amigos: preciso colocar um DBF em ordem de cidades(campo) e cada cidade deve ficar com a data(outro campo) em ordem decrescente... para visualização no DBEDIT...
O problema é eu não estou conseguindo indexar através do SET INDEX, pois só dá DOS error 2... e antes de tudo isso, o DBF também já está filtrado com outra data (condição c/ SET FILTER).
Alguém sabe como resolver?

Parece fácinho, mas não é...
Se não precisar usar o SET INDEX seria melhor! aqui ele não funciona
de jeito nenhum... ou eu que não sei usá-lo direito...
(sei lá: talvez SET ORDER, SORT...)

UM ABRAÇO !!!
desde já agradeço aos bons samaritanos desse forum :)))

Darlan

Enviado: 16 Jun 2005 08:32
por Clipper
Prezado Darlan

O comando SET INDEX é usado para abrir (não criar) os arquivos de indices e estabelecer a ordem deles.

DOS ERROR 2 - O arquivo não existe

O que me parece é que você está tentando abrir um arquivo de indices sem que ele exista.

Portanto, antes de usar o SET INDEX tente criar os indices com o comando INDEX ON

Veja como é facinho... :xau

Até logo.

Marcelo

Enviado: 16 Jun 2005 08:35
por Zoc
Darlan,

O Set Index você usa quando vc já tem o índice criado, no seu caso vc quer criar um índice, então vc usa assim:

Coloque no início do seu PRG esta linha REQUEST DESCEND

Index On campo_cidade + descend( dtos( campo_data )) To nome_do_indice
Set Index to nome_do_indice

Depois de criado o indice, vc faz o Set Filter

A função Descend() vai colocar as datas na ordem decrescente.

O DOS Error 2 esta informando que vc está tentando usar um arquivo que não existe, no caso o índice.

Zoc

PERFEITO!!!

Enviado: 16 Jun 2005 20:06
por Darlan
BELEZA !!! ZOC !

Sensacional !!! É isso mesmo que eu queria, funcionou certinho e não deu erro!

E já aproveito pra te perguntar: e pra fazer a data ficar ao contrário? Ascendente?
E também pra que serve aquele parâmetro dentro da função descent() "DTOS" ???

Valeu a força ! UM ABRAÇO !!!

Obrigado também ao Marcelo pela explicação do SET INDEX !!!

Darlan

Enviado: 16 Jun 2005 20:42
por janio
Amigão,

Não sou o Zoc, mas posso te dar uma mãozinha nesse trem.

1- Para que a data fique ao contrário, ou seja, em ordem ASCENDENTE, é só omitir a função descend, assim:

Código: Selecionar todos

Index On campo_cidade + dtos( campo_data ) To nome_do_indice 
2- A função DTOS é obrigatória na indexação de datas. Se vc não colocar esse parâmetro, as datas ficarão em uma ordem maluca, nem ASCENDENTE nem DESCENDENTE.

Um abraço,

Janio

Enviado: 17 Jun 2005 00:05
por Clipper
Só uma observação

A função DTOS só é obrigatória no caso de indices compostos (campo caractere + campo data).

Se for utilizar um indice apenas por um campo data pode indexar normalmente sem uso da DTOS.

Até logo.

Marcelo