Página 1 de 1

_HB_FUN_DBFCDX

Enviado: 06 Jun 2022 22:11
por RenatoMM
Estou compilando meu sistema com o XHarbour 1.2.1 e BCC5.8, e está dando o seguinte erro:
Unresolved External _HB_FUN_DBFCDX referenced from prog1.obj
Falha na execução, retornou: 2
Alguma dica???

_HB_FUN_DBFCDX

Enviado: 06 Jun 2022 22:45
por alxsts
Olá!

Seja bem-vindo ao fórum Renato!

Inclua em teu PRG principal as linhas 3 e 5 mostradas abaixo.

Código: Selecionar todos

FUNCTION Main()

   REQUEST DBFCDX

   RddSetDefault( "DBFCDX" )

   //
   // código...
   //

RETURN NIL

_HB_FUN_DBFCDX

Enviado: 07 Jun 2022 17:03
por JoséQuintas
Só comentário:

REQUEST tá mais pra uso em linquedição.
Por isso eu costumo deixar no topo do arquivo, assim como #define, #include, etc.

_HB_FUN_DBFCDX

Enviado: 07 Jun 2022 17:52
por carlaoonline
Boa tarde!

Uma dica:

Não tenho muita experiência mas depois de um tempo, percebi nas minhas compilações, que recebo esse erro por colocar no código uma função que não existe,

Por exemplo:

Código: Selecionar todos

...
@ 10,10 say "Fechando o arquivo!"
DbClose("Vendas")


No caso acima, DbClose() não é uma função válida, o certo seria DbCloseArea(), e nesse caso ao compilar retorna o erro abaixo...

" Error: Unresolved external '_HB_FUN_DBCLOSE' referenced from C:\USERS\..... "

A questão é que esse erro não informa a linha, somente a palavra: '_HB_FUN_DBCLOSE

Nesse caso eu procuro no meu código a palavra sempre após o _HB_FUN_ seguido de um parêntese: DBCLOSE(

e ali verifico o que pode ser.

No seu caso eu procuraria por DBFCDX( pois acredito que tenha um parêntese após a palavra, e DBFCDX() não é uma função.

Talvez tenha esquecido de digitar algo na frente, ou algo assim...

_HB_FUN_DBFCDX

Enviado: 07 Jun 2022 23:32
por JoséQuintas
Lembrou certo, apesar da explicação...

Quando usa REQUEST ou funções no fonte, se não tem fonte com ela, o linqueditor pesquisa nas LIBs.
Mas... só nas LIBs indicadas ou LIBs padrão.
Pode acontecer como ele comentou, de nome errado.
Mas pode ser que faltou indicar a LIB a ser pesquisada.

Verifique na forma que está compilando, como é que faz pra indicar a DBFCDX.
Não basta alterar no fonte, a linquedição precisa saber aonde procurar a LIB, e provavelmente até o nome da LIB que contém a função.
Nem todas são pesquisadas automaticamente, ainda mais XHarbour e os makes dele.

_HB_FUN_DBFCDX

Enviado: 28 Set 2022 11:40
por clodoaldomonteiro
Do manual do xHarbour, para fechar a tabela em uso:

Código: Selecionar todos

DbCloseArea()
Closes a database file in a work area. 
Syntax
DbCloseArea() --> NIL

Return
The return value is always NIL. 
Description
The DbCloseArea() function closes the database open in the current work area and all associated files, like index or memo files. Use an aliased expression to close a database in a different work area. 
Closing a database causes all pending file buffers being flushed to disk before files are closed. Also, all file and record locks are released when files are closed. 
Info
See also: CLOSE, DbCloseAll(), DbCommit(), DbUseArea(), USE 
Category: Database functions 
Source: rdd\dbcmd.c 
LIB: xhb.lib 
DLL: xhbdll.dll 

Example
   PROCEDURE Main()
      USE Customer ALIAS Cust
      ? (1)->(Used())                  // result: .T.

      DbEdit()

      Cust->(DbCloseArea())

      ? (1)->(Used())                  // result: .F.
   RETURN

Você pode usar também: "USE", pra fechar a tabela em uso.