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.
Falha no uso da função DESCEND
Moderador: Moderadores
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Falha no uso da função DESCEND
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:
Use a busca do fórum Existem tópicos semelhantes.
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:
Código: Selecionar todos
REQUEST Descend()[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Falha no uso da função DESCEND
Eu tenho visto como DESCENDING em https://vivaclipper.wordpress.com/2012/ ... -commands/
Exemplo de uso, você encontra em C:\hmg.3.0.46\SAMPLES\GRID.35
O changelog do Harbour diz:
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.
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.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Falha no uso da função DESCEND
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.
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.