Página 2 de 2

Indexação utilizando descending.

Enviado: 26 Nov 2014 21:49
por JoséQuintas
Esqueceram de uma coisa: CODEPAGE
A função Descend() não funciona pra qualquer codepage, somente pra padrão.
Eu criei esta aqui pra funcionar com qualquer codepage.

http://www.harbourdoc.com.br/show.asp?s ... PDescend()

E lógico... confira isso de mudar a ordem.

Indexação utilizando descending.

Enviado: 10 Mar 2015 20:03
por Eolo
Help do xHarbour

"StrZero() converts a numeric value to a character string. This is required when numeric values must be concatenated with character strings for formatted display, or when index keys containing Numeric and Character fields must be created."
Poka,

Tava procurando algo sobre indexação, cheguei neste tópico. Ele é meio antigo, talvez vc já tenha resolvido, mas vou acrescentar uma coisa. Li em algum lugar (ou alguém me sugeriu), ainda no tempo do Summer, que a indexação pressupõe valores sempre de mesmo tamanho e que, se fosse necessário usar STR(), era preciso fazer o seguinte:

Código: Selecionar todos

- definir um tamanho fixo para a saída:
str(1234.34,10,2) -> "   1234.34" // sendo 10 o tamanho do campo
str(   1.34,10,2) -> "      1.34"

- ou (preferencialmente) usar o STRZERO(), também com tamanho fixo:
strzero(1234.34,10,2) -> "0001234.34"
strzero(   1.34,10,2) -> "0000001.34"
Não lembro mais da explicação da coisa, mas usava STR() e passei a usar STRZERO(), com tamanho fixo, e nunca tive problemas no Clipper (Summer e 52e) ou no xHarbour, usando Descend() ou não.

Indexação utilizando descending.

Enviado: 10 Mar 2015 21:25
por JoséQuintas
Só reforçando o detalhe da codepage.
Tive problemas aqui num index on Descend(Dtos()), sendo que Dtos() só usa números.
Isso foi depois de adotar a codepage PTISO.
Quando relatei o problema, o pessoal falou que por questão de compatibilidade com Clipper isso não seria alterado.
Então quando se usa codepage, é bom esquecer a Descend() original e também a compatibilidade com outros programas.

Indexação utilizando descending.

Enviado: 11 Mar 2015 14:12
por Poka
Olá Eolo e José Quintas.


Na época não resolvi não, deixei o relatório em outra ordem mesmo, não do jeito que cliente pediu. Vou fazer mais uns testes, depois volto aqui para dizer se resolveu ou não.

Um abraço

Poka

Indexação utilizando descending.

Enviado: 11 Mar 2015 15:04
por Kapiaba

Código: Selecionar todos

//#include "FiveWin.ch"

REQUEST DBFCDX
REQUEST DESCEND  //-> EXTERNAL DESCEND - É obrigatório.

function Main()

   rddRegister(   "DBFCDX", 1 )
   rddsetdefault( "DBFCDX" )

   indexar()

return nil

function indexar()

   USE ARQCID ALIAS ARQCID NEW

   INDEX ON CODPRACA  + DESCEND(STR(VALOR)) TAG CODPRA TO ARQCID

   INDEX ON NOMEPRACA + DESCEND(STR(VALOR)) TAG NOMVAL TO ARQCID

   go top

   SET ORDER TO 01

   Browse()

   go top

   SET ORDER TO 02

   Browse()

return nil
abs