Página 1 de 2
Indexação utilizando descending.
Enviado: 14 Nov 2014 17:51
por Poka
Olá a todos,
tenho um arquivo com código e nome da cidade e valor.
Queria indexar em ordem de código de cidade ascendente e dentro de cada cidade o valor seria do maior para o menor valor ( descendente) . Tem como? .
Já dei uma procurada aqui no fórum, mas não vi nada parecido. Se alguém tiver alguma dica.
Poka.
Indexação utilizando descending.
Enviado: 14 Nov 2014 18:21
por ANDRIL
Indexação utilizando descending.
Enviado: 14 Nov 2014 18:36
por Poka
Nossa, tão simples, sei lá o que tinha feito que não dava certo.
Valeu Andril.
Poka
Indexação utilizando descending.
Enviado: 17 Nov 2014 13:08
por Poka
Andril, não funcionou, já tentei de todo jeito, sai metade na ordem , outra parte não
estou anexando o arquivo aqui, se você ou alguém se dispuser a testar agradeço.
teria que ser nessa ordem
ex:
index on nomepraca+ descend(str(valor)) tag tempox temporary
assim sai mas o nome da praça tambem sai descendente, não é o que eu quero.
index on nomepraca+ str(valor) tag tempox descending temporary
Poka
Indexação utilizando descending.
Enviado: 17 Nov 2014 15:15
por Jairo Maia
Poka,
O arquivo não foi anexado, então não dá para testar. Porém, o comando está correto, tanto da sua forma como a que o ANDRIL passou, e deveria ter o efeito que você quer.
Você usa Harbour ou xHarbour, e qual versão?
Indexação utilizando descending.
Enviado: 17 Nov 2014 15:58
por Poka
Segue o arquivo.
Indexação utilizando descending.
Enviado: 17 Nov 2014 16:02
por Poka
Utilizo
Harbour 3.2.0 dev(r1410050945)
arquivo cdx
Poka
Indexação utilizando descending.
Enviado: 17 Nov 2014 16:28
por ANDRIL
Poka escreveu:Queria indexar em ordem de código de cidade ascendente
Não era pelo codigo da cidade? No exemplo que postou acima, esta usando o nome da cidade. Vou ver aqui, porem o exemplo que te passei era para NTX. Na teoria, deveria funcionar normalmente.
Ate+
Indexação utilizando descending.
Enviado: 17 Nov 2014 16:39
por ANDRIL
Segue o arquivo exportado da sua base, veja se esta correto. Como disse, usei NTX. Talvez seja algo com CDX.
Até+
Indexação utilizando descending.
Enviado: 17 Nov 2014 16:53
por Jairo Maia
Olá Poka,
Compilando com a versão 3.0, 3.2 e 3.4, resultou na mesma imagem abaixo e usando este código:
Código: Selecionar todos
REQUEST DBFCDX
Function Main()
RDDSETDEFAULT( "DBFCDX" )
Use ARQCID Shared New
Index On nomepraca+Descend(Str(valor)) Tag TEMPOX TEMPORARY
SetColor( "GR+/B+" )
Browse()
Return Nil
Indexação utilizando descending.
Enviado: 17 Nov 2014 20:40
por Poka
Andril , Jairo é assim mesmo que era para sair.
Andril, mesmo com o código da praça o resultado é o mesmo.
veja abaixo, como fiz , e o resultado, note que a ordem segue até um determinado valor, depois desordena tudo.
Código: Selecionar todos
abre("arqcid","E")
sele arqCid
Index On nomepraca+Descend(Str(valor)) Tag TEMPOX TEMPORARY
arqCid->(dbsetorder(1))
Código: Selecionar todos
94.77 | ALTINOPOLIS
81.51 | ALTINOPOLIS
64.56 | ALTINOPOLIS
47.88 | ALTINOPOLIS
15.93 | ALTINOPOLIS
3.81 | ALTINOPOLIS
1.80 | ALTINOPOLIS
53.19 | ALTINOPOLIS
391.80 | ARARAQUARA
265.11 | ARARAQUARA
222.42 | ARARAQUARA
135.36 | ARARAQUARA
124.59 | ARARAQUARA
114.60 | ARARAQUARA
110.25 | ARARAQUARA
102.75 | ARARAQUARA
77.79 | ARARAQUARA
77.61 | ARARAQUARA
78.33 | ARARAQUARA
73.50 | ARARAQUARA
75.90 | ARARAQUARA
84.00 | ARARAQUARA
69.39 | ARARAQUARA
66.90 | ARARAQUARA
66.30 | ARARAQUARA
38.10 | ARARAQUARA
33.96 | ARARAQUARA
34.50 | ARARAQUARA
31.80 | ARARAQUARA
35.49 | ARARAQUARA
35.40 | ARARAQUARA
35.40 | ARARAQUARA
30.99 | ARARAQUARA
30.90 | ARARAQUARA
49.65 | ARARAQUARA
49.20 | ARARAQUARA
42.33 | ARARAQUARA
45.90 | ARARAQUARA
40.80 | ARARAQUARA
40.80 | ARARAQUARA
26.37 | ARARAQUARA
23.19 | ARARAQUARA
24.90 | ARARAQUARA
24.30 | ARARAQUARA
25.80 | ARARAQUARA
20.70 | ARARAQUARA
20.10 | ARARAQUARA
19.80 | ARARAQUARA
17.91 | ARARAQUARA
18.93 | ARARAQUARA
16.50 | ARARAQUARA
13.80 | ARARAQUARA
13.50 | ARARAQUARA
14.64 | ARARAQUARA
14.10 | ARARAQUARA
11.10 | ARARAQUARA
15.48 | ARARAQUARA
15.00 | ARARAQUARA
15.00 | ARARAQUARA
10.80 | ARARAQUARA
9.60 | ARARAQUARA
9.30 | ARARAQUARA
7.80 | ARARAQUARA
7.20 | ARARAQUARA
7.50 | ARARAQUARA
8.19 | ARARAQUARA
6.00 | ARARAQUARA
3.30 | ARARAQUARA
4.35 | ARARAQUARA
4.20 | ARARAQUARA
2.70 | ARARAQUARA
2.40 | ARARAQUARA
2.25 | ARARAQUARA
2.10 | ARARAQUARA
2.55 | ARARAQUARA
1.80 | ARARAQUARA
1.80 | ARARAQUARA
1.80 | ARARAQUARA
1.80 | ARARAQUARA
1.20 | ARARAQUARA
5.61 | ARARAQUARA
5.10 | ARARAQUARA
59.10 | ARARAQUARA
59.10 | ARARAQUARA
57.90 | ARARAQUARA
57.87 | ARARAQUARA
53.40 | ARARAQUARA
54.90 | ARARAQUARA
52.20 | ARARAQUARA
51.00 | ARARAQUARA
50.82 | ARARAQUARA
Poka
Indexação utilizando descending.
Enviado: 17 Nov 2014 21:31
por ANDRIL
Fiz um teste com HARBOR 3.0 (rev 16951) usando CDX e retornou o mesmo resultado que postei anteriormente. Seu Harbour talvez pode ter um Bug.
Tente baixar outra versao para tirar esta duvida.
ate+
Indexação utilizando descending.
Enviado: 18 Nov 2014 05:10
por Jairo Maia
Olá Poka,
Mas você está mudando a ordem. Tente novamente mas removendo o DbSetOrder():
Código: Selecionar todos
abre("arqcid","E")
sele arqCid
Index On nomepraca+Descend(Str(valor)) Tag TEMPOX TEMPORARY
// arqCid->(dbsetorder(1))
Indexação utilizando descending.
Enviado: 18 Nov 2014 06:59
por aferra
Olá, bom dia.
eu usaria de forma diferente.
continue indexando como faz e use a função
<alias>->( OrdDescend( ,,.T. ) ) <- DESCENDING
<alias>->( OrdDescend( ,,.F. ) ) <- sem DESCENDING
SINTAX
OrdDescend ()
Determina a ordem de navegação de uma área de trabalho.
argumentos
<cIndexName>
Esta é uma cadeia de caracteres que contém o nome simbólico do índice para consultar. Ele é parecido com o nome de alias de uma área de trabalho. Suporte para <cIndexName> depende do RDD utilizado para criar o índice. Normalmente, RDDS que são capazes de manter vários índices em nomes de índice simbólicas um arquivo de índice de apoio, tais como DBFCDX, por exemplo.
<Norder>
Opcionalmente, um valor numérico que especifica a posição ordinal do índice aberta numa área de trabalho. Índices são números na seqüência de abertura, começando com 1. O valor de zero identifica o índice de controle.
<cIndexFile>
<cIndexFile> é uma cadeia de caracteres com o nome do arquivo que armazena o índice. Só é necessário quando vários arquivos de índice estão abertos que contêm índices tendo o mesmo <cIndexName>.
<lNewDescendFlag>
Um valor lógico pode ser passado para <lNewDescendFlag>. Ele muda a bandeira descida do índice. Quando .T. (true) é especificado, a ordem de navegação na área de trabalho atual está definido para decrescente, .F. (false) define a ordem de navegação para ascendente.
descrição
O OrdDescend function () é usado para mudar a bandeira descer dinamicamente em tempo de execução. A ordem de navegação em uma área de trabalho pode ser alterado de ascendente para descendente e para trás sem ter que criar um índice correspondente. Quando .T. (true) é passado para a função, a ordem de navegação é invertida, ou seja, todas as funções e comandos que movem o ponteiro do registro são invertidos.
Exemplo
Código: Selecionar todos
PROCEDURE Main
USE Customer
INDEX ON Upper(Lastname+Firstname) TO Cust01
GO TOP
? LastName // result: Alberts
GO BOTTOM
? LastName // result: Waters
OrdDescend( ,, .T. ) // change navigational order
SKIP -1 // skipping backwards from the last
// record hits begin of file.
? Bof() // result: .T.
GO BOTTOM
? Eof() // result: .F.
? LastName // result: Alberts
SKIP
? Eof() // Result: .T.
GO TOP
? LastName // result: Waters
USE
RETURN
Indexação utilizando descending.
Enviado: 21 Nov 2014 08:39
por Poka
aferra, também não deu certo. Jairo, já tinha feito sem o dbsetorder sem sucesso.
Vou mudar a versão do harbour para ver o que acontece, depois reporto aqui. O arquivo para o cliente, deixei como ;
index on nomepraca + str(valor) tag tempo descending temporary mesmo.
obrigado a todos
Poka