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

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Darlan
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 01 Mai 2005 22:27

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

Mensagem 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
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Zoc
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 24 Set 2004 13:08
Localização: Leme/SP

Mensagem 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
Darlan
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 01 Mai 2005 22:27

PERFEITO!!!

Mensagem 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
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Responder