indexar ntx descendente
Moderador: Moderadores
-
jcsprog
- Usuário Nível 2

- Mensagens: 63
- Registrado em: 27 Abr 2005 12:04
- Localização: sao paulo - jd.brasil
indexar ntx descendente
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.
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.
jcsprog
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: indexar NTX DESCENDENTE
Olá!
Experimente colocar, no início do arquivo .PRG, a declaração abaixo:
Experimente colocar, no início do arquivo .PRG, a declaração abaixo:
Código: Selecionar todos
REQUEST descend[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: indexar NTX DESCENDENTE
Não seria apenas assim:
Código: Selecionar todos
INDEX ON FANTASIA+STR(PEDIDO,10) TO LANP1 DESCENDING
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
jamazevedo
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 29 Dez 2005 16:50
- Localização: Manaus - AM
Re: indexar NTX DESCENDENTE
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:
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.
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()
E a solução do Sygecom deixará todo o índice invertido, mas pelo que percebi em teu exemplo, a necessidade é somente inverter o numero.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Re: indexar ntx descendente
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.O problema que ocorre é que a função DESCEND() não é linkada com o executável.
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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: indexar ntx descendente
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
Se SIM, por tabela, a solução para quem usa CDX seria a abaixo ?
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
REQUEST DESCEND
Grato,
gabriel
lugab
Re: indexar ntx descendente
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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: indexar ntx descendente
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.
Ó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:
Código: Selecionar todos
INDEX ON STR( Descend( dtAlgo ) )Código: Selecionar todos
<xcAlias>->( DbSeek( STR( Descend( dtAlgo ) ) ) )[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Re: indexar ntx descendente
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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
