Clipper On Line • Ver Tópico - Erro na função DESCEND pelo DBUSEAREA()

Erro na função DESCEND pelo DBUSEAREA()

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 16 Nov 2016 06:35

Bom dia.

Estou com um problema que não consigo resolver desde ontem de manhã e está me deixando louco.

Criei um pequeno projeto e para agilizar, peguei "pedaços" de outros programas, para aproveitar os SETs de ambiente, etc. Sempre funciona, mas agora me deparo com uma coisa estranha.

Ao dar DBUSEAREA numa tabela que tem índices com a função DESCEND, o programa simplesmente aborta, sem mensagem, sem nada.

Lendo o HMG Errorlog File, está dando: "Error BASE/1001 Undefined function: DESCEND"

Como pode ele não localizar a função? Meus projetos não tem LIBs, CHs, nada que precise acrescentar, são simplésimos, todas as funções auxiliares dentro do próprio programa, enfim, um pé de boi mesmo.

Em projetos antigos, tudo funciona corretamente. ele abre as tabelas com o DESCEND certinho. Mas em um novo projeto, mesmo copiando os comandos dos programas que funcionam, dá esse erro.

Pensei até em reinstalar o HMG, ainda uso a versão 3.0.46 que me atende muito bem até agora.

Se alguém tiver alguma ideia, agradeço. Estou sem opções, com prazo pra entregar esse trabalho, um caos...

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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor JoséQuintas » 16 Nov 2016 08:24

coloque #request DESCEND

Ou crie alguma rotina tapa-buraco.

FUNCTION NadaFaz()
   RETURN Descend( "x" )


Motivo:
A linquedição só "puxa" funções das LIBs que são necessárias.
Se não tem fonte usando Descend(), ela não é "puxada".
Ou força com "request", ou cria uma rotina que use Descend(), mesmo que a rotina não seja usada já serve pra "avisar" o linqueditor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18118
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1214 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Pablo César » 16 Nov 2016 09:04

Oi Mario,

Eu não tenho problemas algum com a função Descend(). Você não disponibilizou um exemplo de como estaria utilizando. Nem como está compilando. Faça sempre um exemplo prático para que possa ser analisado.
Mas de todas formas, a função Descend é do Harbour e não tem nada a ver com HMG ou pelo menos esta função.

Veja o exemplo: D:\hmg.3.4.3\SAMPLES\Controls\Grid\GRID_35

Aqui utiliza a RDD CDX mas pode também utilizar pra NTX. Eu fiz um teste com NTX e não encontrei problemas. A versão que utilizei é a ultima (HMG 3.4.3).

USE TEST
INDEX ON DESCEND(Str(CODE,4,0)) TO TEST1 // Pra NTX

Como pode ele não localizar a função? Meus projetos não tem LIBs, CHs, nada que precise acrescentar, são simplésimos, todas as funções auxiliares dentro do próprio programa, enfim, um pé de boi mesmo.

Sim. O HMG oferece isso, não precisa estar adicionando libs e requires como comumente você faria utilizando apenas o Harbour. Isso porque a biblioteca oferece a maioria das contribs. Salvo em caso especiais como SQL... também para RDDs. Veja bem, talvez a questão esteja no RDD que está utilizando e você não deu a instrução para utilizar NTX por exemplo.
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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor JoséQuintas » 16 Nov 2016 09:25

Criei um pequeno projeto e para agilizar, peguei "pedaços" de outros programas, para aproveitar os SETs de ambiente, etc. Sempre funciona, mas agora me deparo com uma coisa estranha.
Ao dar DBUSEAREA numa tabela que tem índices com a função DESCEND, o programa simplesmente aborta, sem mensagem, sem nada.


No aplicativo normal deve ter um INDEX ON Descend(), por isso o aplicativo normal funciona.
Como ele mencionou de fazer uma rotina separada, ela não deve fazer uso de Descend(), a não ser na hora de abrir o arquivo, o que causa o erro, porque no momento da linquedição ela não era usada.

Talvez dois testes práticos:

   ? &( "descend(1)" )


? Descend(1)
? &( "descend(1)" )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18118
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1214 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 16 Nov 2016 11:09

Olá, pessoal.

Como é que eu ia saber isso? Caras, estou até passando mal, sinceramente.

Abaixo, meu código com um "gatilho" pra testar a abertura da tabela com DESCEND:

#include <hmg.ch>

Function Main
   PRIVATE cCod          := SPAC(10), ;
                cSen           := SPAC(10), ;
                TestesMario := .t. 
   
   SET DELE ON
   SET CENT ON
   SET SOFT OFF
   SET DATE BRIT
   SET EPOC TO 1964
   SET NAVIGATION EXTENDED
   SET BROWSESYNC ON
   
   REQUEST DBFCDX
   RDDSETDEFAULT("DBFCDX")
   DBSETDRIVER("DBFCDX")
   
   DBUSEAREA( .T.,"DBFCDX", "SETCER"   )
   DBUSEAREA( .T.,"DBFCDX", "USUARIOS" )

   IF ! FILE("*.CDX")
      MSGINFO("SEM INDEXES, APÓS ABERTURA RODE A ORGANIZAÇÃO.")
     INDEX ON NOMME TAG NOMME TO USUARIOS
     CLOSE
   ENDIF
   SET INDEX TO USUARIOS

   // Path da pasta do outro sistema.

   IF ! EMPTY(SETCER->PASTA_PROT)
      xPath := ALLTRIM(SETCER->PASTA_PROT)
      SET PATH TO (xPath)
   ENDIF

   // teste de abertura de uma tabela em outra área. Ela tem DESCEND nos seus índices.

   IF ! FILE("PEDIDOS.DBF")
      MSGINFO("PEDIDOS.DBF NÃO LOCALIZADO")
   else
      msginfo('Localizou Pedidos.dbf')
   ENDIF   
   DBUSEAREA( .T.,"DBFCDX","PEDIDOS",,  .T. )   // Aqui que ocorre o fim do programa sem aviso.
   SET INDEX TO PEDIDOS
   
   msginfo('Abriu Pedidos.dbf')
   ////
   
   Load Window Main
   Main.Center
   Main.Activate
Return


De fato, não tenho um DESCEND nesse pequeno programa. Posso até forçar isso na indexação de uma tabela, só pra garantir.

Só feras do Harbour como vocês pra salvar a vida de um velho clipeiro burro, rs

Vou testar aqui e reporto o resultado.

Muito obrigado mesmo!

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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 16 Nov 2016 11:34

Pessoal, voltei!

Pra testar, criei um índice com DESCEND naquela tabelinha e deu certo. Deu um errinho, mas é galho fraco pq fiz correndo.

Talvez eu use mesmo o #request pra não criar índices á toa.

Eu estou há 18 horas queimando a mufa com isso. Ontem de 10 às 22 e hoje desde sete da manhã até agora quando li as respostas. Se não fosse vocês ia ficar até o natal pra descobrir. Fora que estava com medo de ser alguma falha que afetasse os outros projetos. Tentei compilar até em outro computador achando que era vírus, antivírus, firewall ou dano em algum arquivo no HMG da minha máquina.

Acho que é o ponto fraco da cultura Harbour, falta de literatura de apoio. Eu ainda tenho um livrinho do Ramalho como guia do Clipper e ainda me ajuda com coisas que esqueço. Se tivesse um livro ou um e-book em português, de preferência, ia vender como pão quente. Tem coisa, tem. Mas muito pouco e em PT-Br, piorou...

Se não fosse os mais experientes que ajudam os menos informados aqui, a gente estava ferrado e mal pagos.

De novo, muitíssimo obrigado a vocês. Não era brincadeira, estava passando mal mesmo. Bateu pânico, confesso.

Abraço,
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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor JoséQuintas » 16 Nov 2016 13:17

Só corrigindo: mencionei #request mas é REQUEST.
Aproveitando, e colocando algo que já usa pelo mesmo motivo:

REQUEST HB_CODEPAGE_PTISO
REQUEST DBFFPT
REQUEST DBFCDX
REQUEST DESCEND


Tudo é por um mesmo motivo: se não colocar, não linquedita.
É até mais normal do que parecia, mas é difícil lembrar que DESCEND e outras funções precisam disso, caso não estejam em uso no fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18118
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1214 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Pablo César » 16 Nov 2016 13:30

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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 16 Nov 2016 13:57

Alô, vcs!

Sinceramente não estou certo se entendia a utilidade do REQUEST, só o usei em algumas coisas por empirismo e por alguma necessidade anterior. Agora entendi que o compilador pode não trazer todos os elementos da LIB, se estes não forem necessários. Conhecer o Harbour e a suas nuances em compilação, linkedição, etc, seria desejável se não tivéssemos que correr o tempo todo com o trabalho. Mas a cada dia me certifico que é uma ferramenta espetacular se o programador souber tirar o máximo dela. Não é meu caso ainda.

Pablo, olha que procurei tópicos com o DESCEND, mas voltaram mais de 200 citações e não vi essa em especial. Tinha poupado tempo e chateação.

Coloquei o REQUEST DESCEND no Main do programa e resolveu. Tomara que não surja outro abacaxi desses tão cedo, senão a pressão do velhinho vai a 22...

De novo, obrigado a vocês.

Abraço,
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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 26 Nov 2016 17:59

Mário,

Essa do REQUEST DESCEND vem do clipper
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 26 Nov 2016 19:57

Boa noite à todos!

Asimoes, comigo no Clipper nunca aconteceu...

Dei sorte, então. Mas tomei esse susto agora.

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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Pablo César » 27 Nov 2016 11:15

Mario Mesquita escreveu:comigo no Clipper nunca aconteceu...

Comigo também, não. Aliás esse negócio do REQUEST eu só vi apartir do Harbour...
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

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 27 Nov 2016 12:46

REQUEST vem do Clipper é só pesquisar no google ou ver nos livros sobre clipper, isso para quem já programou em clipper é conhecido.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 27 Nov 2016 12:48

Definição de REQUEST

REQUEST
Declares the symbolic name of an external function or procedure for the linker.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 27 Nov 2016 12:55

No LeoDb (server.prg) por um acaso o criador do LedoDb tá errado?
Olha só o REQUEST, no clipper isso era usado quando era criado um ovl (overlay) seria uma espécie de dll

   REQUEST __HB_EXTERN__

   REQUEST  ABS, ALLTRIM, AT, CHR, CTOD, DATE, DAY, DELETED, DESCEND, DTOC, DTOS, ;
      EMPTY, I2BIN, L2BIN, LEFT, LEN, LOWER, LTRIM, MAX, MIN, MONTH, OS, PAD, PADC, ;
      PADL, PADR, RAT, RECNO, RIGHT, ROUND, RTRIM, SPACE, STOD, STR, STRZERO, ;
      SUBSTR, REPLICATE, TIME, TRANSFORM, TRIM, UPPER, VAL, YEAR, ;
      hb_ATokens, hb_tokenGet, hb_tokenCount, hb_WildMatch, hb_DiskSpace
   REQUEST TIME, HB_DATETIME, HB_DTOT, HB_TTOD, HB_NTOT, HB_TTON, HB_CTOT, HB_TTOC, ;
      HB_TTOS, HB_STOT, HB_HOUR, HB_MINUTE, HB_SEC, HB_VALTOEXP

   REQUEST FieldPos, FieldGet, FieldPut, Deleted, hb_FieldType, hb_FieldLen, hb_FieldDec
   REQUEST dbGoTop, dbGoBottom, dbSkip, dbGoto, dbSeek, Bof, Eof, dbEval, dbInfo, BOM
   REQUEST dbSetFilter, dbClearFilter
   REQUEST dbAppend, dbCommit, RLock, FLock, dbUnlock, dbDelete, dbRecall
   REQUEST ordKeyVal, dbOrderInfo, Alias, Select, dbSelectArea

â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 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