Página 1 de 1
indexar ntx descendente
Enviado: 02 Dez 2009 22:40
por jcsprog
e ai pessoal preciso indexar descendente os seguintes campos nome fantasia + numero do pedido
fantasia = space(20) e numero do pedido numerico(10)
no clipper 5.3 erra assim index on fantasia+descend(str(pedido,10)) to lanp1
funcionava tudo bem
no harbour nao funciona da erro ja na linha de index
agradeço a ajuda
utilizo harbour x minigui
---
Nota da Moderação (Maligno):
A presente mensagem, totalmente composta por letras maiúsculas, teve de ser editada para a troca de caixa. Por favor, atente para as regras do fórum e redija suas mensagens de acordo com as regras de netiqueta.
Re: indexar NTX DESCENDENTE
Enviado: 02 Dez 2009 23:43
por alxsts
Olá!
Experimente colocar, no início do arquivo .PRG, a declaração abaixo:
Re: indexar NTX DESCENDENTE
Enviado: 03 Dez 2009 01:54
por sygecom
Re: indexar NTX DESCENDENTE
Enviado: 03 Dez 2009 10:26
por jamazevedo
O problema que ocorre é que a função DESCEND() não é linkada com o executável. Sabe-se lá porque motivo.
Para resolver o problema fiz uma chamada a essa função no fim do programa e funcionou, veja o exemplo abaixo:
Código: Selecionar todos
FUNCTION Main()
....
USE Clientes VIA "DBFCDX"
INDEX ON Clientes->Nome + DESCEND( Clientes->Numero ) TO Clientes
....
RETURN
DESCEND()
Já a solução apresentada pelo Alxsts para mim é novidade vou testá-la.
E a solução do Sygecom deixará todo o índice invertido, mas pelo que percebi em teu exemplo, a necessidade é somente inverter o numero.
Re: indexar ntx descendente
Enviado: 03 Dez 2009 10:51
por Maligno
O problema que ocorre é que a função DESCEND() não é linkada com o executável.
Exatamente. Explicando: a simples inclusão do nome "Descend()" na chave de índice não surte efeito algum. Uma chave de índice é apenas uma simples
string, avaliada em
run-time.
Para casos assim, há duas soluções: como você descobriu, inserindo uma simples chamada à função, de forma inócua OU utilizando o comando apropriado para esse fim: REQUEST DESCEND, como o colega "alxsts" indicou. Isso faz com o que o símbolo DESCEND seja forçosamente incluído na tabela de ligações passada ao
linker, que então incluirá no EXE o módulo onde este símbolo se encontra.
Re: indexar ntx descendente
Enviado: 03 Dez 2009 15:21
por lugab
Pessoal, a solucão é colocar "REQUEST DESCEND" no ínício ?
Se SIM, por tabela, a solução para quem usa CDX seria a abaixo ?
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
REQUEST DESCEND
Grato,
gabriel
Re: indexar ntx descendente
Enviado: 03 Dez 2009 15:32
por Maligno
Para o problema de "unresolved external" deve funcionar. Ou pelo menos deve gerar o EXE sem qualquer erro. Porém, o OP não se manifestou a respeito, nem tampouco detalhou o erro. Apenas cogitou-se a possibilidade do erro ser esse. Se for, deve resolver. Se for outro erro, restará ao OP entrar em detalhes.
fUNCIONOU COM REQUEST
Enviado: 04 Dez 2009 12:25
por jcsprog
VALEU GALERA

Re: indexar ntx descendente
Enviado: 04 Dez 2009 15:10
por alxsts
Olá!
Ótimo!
Algumas considerações finais:
- Descend() de um campo tipo data retorna um valor numérico. Portanto, para indexar uma data em ordem cronológica inversa, use:
- para recuperar dados em um arquivo indexado com Descend(), é necessário usar a função também:
- existe uma queda de performace nos processos de indexação e busca.
Re: indexar ntx descendente
Enviado: 04 Dez 2009 15:29
por Maligno
A regra é clara: a perfomance na busca por uma chave de índice será tão pior quanto mais complexa for a expressão da chave.