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