Clipper On Line • Ver Tópico - Falha no uso da função DESCEND

Falha no uso da função DESCEND

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Falha no uso da função DESCEND

Mensagempor Mario Mesquita » 19 Nov 2012 21:40

Boa noite, pessoal.

Um problema muito interessante está ocorrendo comigo hoje, e após umas seis horas me lascando aqui, se alguem já passou por isso, não sei se por causa da HMG ou do Harbour, aceito uma luz:

Estou montando um programa que deve ler um DBF de outro programa, em outra pasta. Para isso, criei um SET PATH para esse programa abrir a tabela.

Só que dá um erro ao abrir a mesma: Error base 1001: Função indefinida: DESCEND.

A chave primaria de um indice dessa tabela tem um DESCEND e é um campo data. A principio achei que fosse o PATH. Mas ele está certo.

Um detalhe: O arquivo CDX tem o mesmo nome do DBF e o erro de manifesta antes da abertura do indice pelo SET INDEX TO. Comecei a achar que era isso. Mesmo tentando abrir sem indice, dava o mesmo erro.

Em seguida, tentei copiando esse DBF e seu CDX para a pasta do sistema que estou preparando. Nada. Em seguida, apaguei o CDX e rodei o programa. Abriu.

Em seguida fiz mais uma coisa: Indexei esse DBF no sistema novo. Aì, abre. Mas se eu copiar o DBF e o CDX originais da sua pasta de origem, não abre.

Na pasta original, essa tabela roda normalmente pelo seu programa. Mas no que estou testando não.

Pensei que podia ser o HMG 3.0.46, mas com o 3.0.41 tambem não rodou.

Copiar a tabela não é uma opção, pois terei outras pra fazer a mesma coisa. Tô doidinho de estar apanhando de uma coisa tão simples...

No arquivo Hb_Out, que reporta os erros, a seguinte mensagem:

"Erro irrecuper vel 9104: hb_cdxIndexFree: index file still locked."

Muito estranho. Se alguem já viu isso e puder me dar a dica, agradeço.

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

Falha no uso da função DESCEND

Mensagempor alxsts » 19 Nov 2012 22:43

Olá!

Este problema (falta da função Descend()) ocorre pois, na hora da geração do executável, não há nenhuma referência a ela. Assim, ela não é linkada ao executável. Você pode dizer: mas eu referencio ela na criação do índice". Só que ela está em alguma string que é a chave do índice ou até mesmo em algum arquivo .DBF que contem as chaves de índice.

Para estes casos, existe em xBase o comando REQUEST. Ele força a linkedição de algum módulo ao executável, mesmo que não haja referência explícita.

Para solucionar o teu problema, inclua a linha abaixo no início dos PRGs principais dos sistemas:
REQUEST Descend()


Use a busca do fórum Existem tópicos semelhantes.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Falha no uso da função DESCEND

Mensagempor Pablo César » 20 Nov 2012 20:23

Eu tenho visto como DESCENDING em https://vivaclipper.wordpress.com/2012/07/13/index-commands/

Exemplo de uso, você encontra em C:\hmg.3.0.46\SAMPLES\GRID.35

O changelog do Harbour diz:
2002-02-02 11:40 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
* source/compiler/genhrb.c
* source/vm/runner.c
* Creating/checking signature and version number for .hrb file.
It is: \192 + 'H' + 'R' + 'B'
then 2 byte version number, currently - 2
* include/hbrddntx.h
* source/rdd/dbfntx/dbfntx1.c
* some fixes and additions - DESCENDING clause works now.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Falha no uso da função DESCEND

Mensagempor Mario Mesquita » 20 Nov 2012 21:10

Valeu pelas dicas, pessoal.

Imaginei que pudesse ser algo assim, no caso do REQUEST.

Mas o estranho é que dentro do programa que trata a tabela, não dá erro. Só quando outro programa, estranho...

Não uso DESCENDING pois entendi, ao ler um guia do Harbour, ele engloba todas as chaves do indice. A função DESCEND() pode se aplicar a apenas uma chave. No meu caso a chave primaria.

A solução que consegui foi criar outro indice, fora daquele que dava o erro. Eu monto o um CDX unico, com aqueles TAGs, e botando todos os indices lá dentro.

Percebendo isso, fiz outro CDX com a organização que precisava para a importação dos dados e resolveu.

Ainda acho isso estranho, mas deu-se jeito.

Agradeço a ajuda de voces.

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro