Erro na função DESCEND pelo DBUSEAREA()
Moderador: Moderadores
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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.
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro na função DESCEND pelo DBUSEAREA()
coloque #request DESCEND
Ou crie alguma rotina tapa-buraco.
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.
Ou crie alguma rotina tapa-buraco.
Código: Selecionar todos
FUNCTION NadaFaz()
RETURN Descend( "x" )
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro na função DESCEND pelo DBUSEAREA()
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
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
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.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.
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro na função DESCEND pelo DBUSEAREA()
No aplicativo normal deve ter um INDEX ON Descend(), por isso o aplicativo normal funciona.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.
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:
Código: Selecionar todos
? &( "descend(1)" )
Código: Selecionar todos
? Descend(1)
? &( "descend(1)" )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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:
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.
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:
Código: Selecionar todos
#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
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.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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.
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro na função DESCEND pelo DBUSEAREA()
Só corrigindo: mencionei #request mas é REQUEST.
Aproveitando, e colocando algo que já usa pelo mesmo motivo:
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.
Aproveitando, e colocando algo que já usa pelo mesmo motivo:
Código: Selecionar todos
REQUEST HB_CODEPAGE_PTISO
REQUEST DBFFPT
REQUEST DBFCDX
REQUEST DESCEND
É 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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro na função DESCEND pelo DBUSEAREA()
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
Erro na função DESCEND pelo DBUSEAREA()
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.
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.
Erro na função DESCEND pelo DBUSEAREA()
Mário,
Essa do REQUEST DESCEND vem do clipper
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)
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)
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
Boa noite à todos!
Asimoes, comigo no Clipper nunca aconteceu...
Dei sorte, então. Mas tomei esse susto agora.
Saudações,
Mario.
Asimoes, comigo no Clipper nunca aconteceu...
Dei sorte, então. Mas tomei esse susto agora.
Saudações,
Mario.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro na função DESCEND pelo DBUSEAREA()
Comigo também, não. Aliás esse negócio do REQUEST eu só vi apartir do Harbour...Mario Mesquita escreveu:comigo no Clipper nunca aconteceu...
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.
Erro na função DESCEND pelo DBUSEAREA()
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)
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)
Erro na função DESCEND pelo DBUSEAREA()
Definição de REQUEST
REQUEST
Declares the symbolic name of an external function or procedure for the linker.
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)
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)
Erro na função DESCEND pelo DBUSEAREA()
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
Olha só o REQUEST, no clipper isso era usado quando era criado um ovl (overlay) seria uma espécie de dll
Código: Selecionar todos
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)
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)
