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
Veja se é isso:

Código: Selecionar todos

index on STR(codigo)+DESCEND(STR(valor)) to arqntx
Ate+

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.

Código: Selecionar todos

INDEX ON NOMEPRACA+DESCEND(STR(VALOR)) TO CIDADE
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
Teste7.jpg

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