Página 1 de 2

FBD no HMG

Enviado: 23 Abr 2013 12:08
por guanabara
Até rimou, bom dia à todos, pesquisei no Forum e achei vários links sobre o assunto para Harbour mais nenhum funcionou no HMG 3.1.1, tenho um banco já pronto em Firebird *.FDB que roda perfeitamente no IBEXPERT (Gerenciador de Banco de Dados Firebird) e preciso rodar o mesmo no HMG, onde cheguei mais perto foi neste link com a dica do luiz antonio da silva https://pctoledo.org/forum/viewto ... fdb#p81879, só que ainda não rodou....

FBD no HMG

Enviado: 23 Abr 2013 16:30
por luiz antonio da silva
Olá,

Ajuda se postar um exemplo com conexão, leitura, gravação e update ? (coisa simples)

luiz

FBD no HMG

Enviado: 23 Abr 2013 17:00
por guanabara
Claro que ajuda, serei eternamente grato... :))

FBD no HMG

Enviado: 23 Abr 2013 17:12
por luiz antonio da silva
Blz.

hj quando chegar em casa vou montar um exemplo funcional e postar aqui.

Luiz

FBD no HMG

Enviado: 23 Abr 2013 20:55
por luiz antonio da silva
Olá !

Os arquivos envolvidos são os seguintes.

BANCO.INI

Código: Selecionar todos

[FIREBIRD]
IP=127.0.0.1
CM=C:\FDB
BD=ARQUIVO.FDB
FB=1
IP= Endereço ip onde o FDB se encontra
CM = Caminho onde se encontra o FDB
BD = Nome do arquivo FDB

ADODB.CH

Código: Selecionar todos

*
* Adodb.CH - Arquivo de Definição de Constantes do Sistema
*
//Tipo do Cursor
#Define adOpenForwardOnly     0  //adOpenForwardOnly = 0 # permite somente que você avance aos registros posteriores,perdendo-se os anteriores
#Define adOpenKeyset          1  //adOpenKeyset      = 1 # leitura e escrita (não permite ver alterações ou exclusões feitas por outros usuários)
#Define adOpenDynamic         2  //adOpenDynamic     = 2 # leitura e escrita (permite ver alterações ou exclusões feitas por outros usuários)
#Define adOpenStatic          3  //adOpenStatic      = 3 # permite somente leitura

//Tipo de travamento de Registros - LockType
#Define adLockReadOnly        1  //adLockReadOnly        = 1 somente leitura
#Define adLockPessimistic     2  //adLockPessimistic     = 2 Impede que outras sessões alterem o registro que estiver alocado pelo usuário
#Define adLockOptimistic      3  //adLockOptimistic      = 3 Todos podem alterar o mesmo registro
#Define adLockBatchOptimistic 4  //adLockBatchOptimistic = 4  Impede que outras sessões quando estiver em modo update batch

//Localização do Cursor - CursorLocation
#Define adUseServer  2
#Define adUseClient  3

//Estados dos RecordSets
#Define adEditNone       0
#Define adEditInProgress 1
#Define adEditAdd        2
#Define adEditDelete     4

//Tipos de dados retornados pelo DB
#Define RS_Empty              0     //Padrao Dbase C
#Define RS_TinyInt           16     //Padrao Dbase N
#Define RS_SmallInt           2     //Padrao Dbase N
#Define RS_integer            3     //Padrao Dbase N
#Define RS_BigInt            20     //Padrao Dbase N
#Define RS_UnsignedTinyInt   17     //Padrao Dbase N
#Define RS_UnsignedSmallInt  18     //Padrao Dbase N
#Define RS_UnsignedInt       19     //Padrao Dbase N
#Define RS_UnsignedBigInt    21     //Padrao Dbase N
#Define RS_Single             4     //Padrao Dbase N
#Define RS_Double             5     //Padrao Dbase N
#Define RS_currency           6     //Padrao Dbase N
#Define RS_Decimal           14     //Padrao Dbase N
#Define RS_Numeric          131     //Padrao Dbase N
#Define RS_Boolean           11     //Padrao Dbase N
#Define RS_Error             10     //Padrao Dbase C
#Define RS_UserDefined      132     //Padrao Dbase C
#Define RS_Variant           12     //Padrao Dbase C
#Define RS_IDispatch          9     //Padrao Dbase C
#Define RS_IUnknown          13     //Padrao Dbase C
#Define RS_GUID              72     //Padrao Dbase C
#Define RS_Date               7     //Padrao Dbase D
#Define RS_DBDate           133     //Padrao Dbase D
#Define RS_DBTime           134     //Padrao Dbase D
#Define RS_DBTimeStamp      135     //Padrao Dbase D
#Define RS_BSTR               8     //Padrao Dbase C
#Define RS_Char             129     //Padrao Dbase C
#Define RS_VarChar          200     //Padrao Dbase C
#Define RS_LongVarChar      201     //Padrao Dbase C
#Define RS_WChar            130     //Padrao Dbase C
#Define RS_VarWChar         202     //Padrao Dbase C
#Define RS_LongVarWChar     203     //Padrao Dbase C
#Define RS_Binary           128     //Padrao Dbase C
#Define RS_VarBinary        204     //Padrao Dbase C
#Define RS_LongVarBinary    205     //Padrao Dbase C
#Define RS_Chapter          136     //Padrao Dbase C
#Define RS_FileTime          64     //Padrao Dbase C
#Define RS_DBFileTime       137     //Padrao Dbase C
#Define RS_PropVariant      138     //Padrao Dbase C
#Define RS_VarNumeric       139     //Padrao Dbase C

#xcommand DECLARE CONNECTION <w> ;
   =>;
   #xtranslate <w>.\<p:BeginTrans,RollbackTrans,CommitTrans,close,execute\> => <w>:\<p\>;;

#xcommand DECLARE RECORDSET <w> ;
   =>;
   #xtranslate <w>.\<p:MoveNext,MovePrevious,MoveFirst,MoveLast,Find,AddNew,Update,Eof,Bof,close,CancelUpdate,Delete,Requery\> => <w>:\<p\>;;
   #xtranslate <w>->\<c>\.\<p:Value,Name,type\> => <w>:Fields\[\<(c)\>]:\<p\>;;
   #xtranslate <w>.\<c\>.\<p:Value,Name,type\> => YKKRETVALUE <w> \<(c)\> \<p\> 

   #xtranslate YKKRETVALUE <a> <b> <c> => <a>:Fields\[\<b>]:<c>

#xTranslate NEW RECORDSET <a>  => <a>:=CreateObject("ADODB.Recordset")
#xTranslate NEW CONNECTION <a> => <a>:=CreateObject("ADODB.Connection")
#command CLOSE CONNECTION <a> => <a>:close()
#command CLOSE RECORDSET <a> => <a>:close()
#xtranslate OPEN CONNECTION <b> STRING <(a)> => <b>:Open(<(a)>)
#command OPEN RECORDSET <a> CONNECTION <b> CURSORTYPE <d> LOCKTYPE <e> SQL <f> => <a>:Open(<f>,<b>,<d>,<e>)
#command ERROR CONNECTION <a> =>  if(<a>:Errors:Count>0,MsgStop("Erro Nativo: "+alltrim(Str(<a>:Errors\[0\]:NativeError))+chr(13)+chr(10)+"Descrição..: "+<a>:Errors\[0\]:Description),Nil)

/********************** Com estas linhas funciona com Harbour
*********************/
#ifdef __HARBOUR__
//ANNOUNCE HB_GTSYS
ANNOUNCE HB_GTSYS
REQUEST HB_GT_GUI_DEFAULT
#xcommand TRY => BEGIN SEQUENCE WITH s_bBreak
#xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
#xcommand FINALLY => ALWAYS
static s_bBreak := { |oErr| break( oErr ) }
#endif
/********************* Com estas linhas funciona com Harbour
*********************/
ACFDB.PRG

Código: Selecionar todos

#include "hmg.ch"
#INCLUDE "ADODB.CH"
#DEFINE HBA HB_OEMTOANSI

Procedure main()
PUBLIC R_FB:=R_IP:=R_CM:=R_BD:="",altera:=0
PUBLIC _PASTA:=GETSTARTUPFOLDER()
PUBLIC ARQCFG:=_PASTA+"\BANCO.INI"

SET DELETED ON
SET DATE BRIT
SET CENTURY ON
SET EPOCH TO 1960
SET MULTIPLE OFF
SET AUTOPEN OFF
Set ToolTipBalloon On

if file(ARQCFG)
   BEGIN INI FILE (ARQCFG)
     GET R_IP      SECTION 'FIREBIRD'   ENTRY 'IP'
     GET R_CM      SECTION 'FIREBIRD'   ENTRY 'CM'
     GET R_BD      SECTION 'FIREBIRD'   ENTRY 'BD'
     GET R_FB      SECTION 'FIREBIRD'   ENTRY 'FB'
   END INI
else
   MSGINFO("BANCO.INI NAO ENCONTRADO")
endif

opc:=.t.
if VAL(R_FB)<>0
   RIP:=R_IP
   RCM:=R_CM
   RBD:=R_BD
   if LEN(RIP)=0 .OR. ALLTRIM(RIP)="127.0.0.1"
      _ARQUIVO:=":"+RCM+"\"+RBD
   else
      _ARQUIVO:="\\"+ALLTRIM(RIP)+"\"+ALLTRIM(RCM)+"\"+ALLTRIM(RBD)
   endif

   while .T.
   OKX:="S"
      Try
         FDB:=CreateObject("ADODB.Connection")
         FDB:Open("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME="+ _ARQUIVO +";CHARSET=WIN1252;DIALECT=3;CLIENT=fbclient.dll")
      Catch e
         CLOSE(FDB)
         OKX:="N"
      End
      if OKX="S"
         EXIT
      else
         OPC:=MSGYESNO(HBA("ERRO NA CONEXÇO COM FIREBIRD")+CRLF+"TENTAR NOVAMENTE ?","ERRO")
         IF OPC=.F.
            EXIT
         endif
      endif
   enddo
endif
if opc=.f.; quit; endif


DEFINE WINDOW CAD AT 272 , 335 WIDTH 593 HEIGHT 372 TITLE "FIREBIRD" ON INIT INICIO() MAIN

     DEFINE LABEL Label_1
            ROW    10
            COL    10
            WIDTH  60
            HEIGHT 22
            VALUE "CODIGO"
     END LABEL  

     DEFINE LABEL Label_2
            ROW    50
            COL    10
            WIDTH  60
            HEIGHT 24
            VALUE "DATA"
     END LABEL  

     DEFINE LABEL Label_3
            ROW    90
            COL    10
            WIDTH  60
            HEIGHT 24
            VALUE "HORA"
     END LABEL  

     DEFINE LABEL Label_4
            ROW    130
            COL    10
            WIDTH  60
            HEIGHT 24
            VALUE "DADOS"
     END LABEL  

     DEFINE TEXTBOX Text_1
            ROW    10
            COL    80
            WIDTH  120
            HEIGHT 24
            FONTNAME 'Arial'
     END TEXTBOX 


     DEFINE TEXTBOX Text_2
            ROW    50
            COL    80
            WIDTH  120
            HEIGHT 24
            VALUE ''
            ONENTER CAD.TEXT_3.SETFOCUS
     END TEXTBOX 

     DEFINE TEXTBOX Text_3
            ROW    90
            COL    80
            WIDTH  120
            HEIGHT 24
            FONTNAME 'Arial'
            VALUE ''
            ONENTER CAD.TEXT_4.SETFOCUS
     END TEXTBOX 

     DEFINE TEXTBOX Text_4
            ROW    130
            COL    80
            WIDTH  120
            HEIGHT 24
            VALUE ''
            ONENTER CAD.BUTTON_1.SETFOCUS
     END TEXTBOX 

     DEFINE GRID Grid_1
            ROW    10
            COL    210
            WIDTH  370
            HEIGHT 315
            ITEMS {}
            WIDTHS {40,80,80,170}
            HEADERS {'ID','DT','HR','DD'}
            onchange mostra_dados()
            on dblclick alterar()
            TOOLTIP "Duplo clique ou enter p/ alterar"
     END GRID  

     DEFINE BUTTON Button_1
            ROW    170
            COL    10
            WIDTH  192
            HEIGHT 34
            CAPTION "&GRAVAR"
            ACTION GRAVAR()
     END BUTTON  

     DEFINE BUTTON Button_2
            ROW    210
            COL    10
            WIDTH  192
            HEIGHT 34
            CAPTION "&EXCLUIR"
            ACTION EXCLUIR()
     END BUTTON  

     DEFINE BUTTON Button_3
            ROW    290
            COL    10
            WIDTH  192
            HEIGHT 34
            CAPTION "&SAIR"
            ACTION CAD.RELEASE
     END BUTTON  

END WINDOW
ACTIVATE WINDOW CAD

close(FDB)

RETU

FUNC INICIO()
delete item ALL from grid_1 of cad
cad.grid_1.enabled:=.f.
cad.text_1.enabled:=.f.
cad.text_2.enabled:=.f.
cad.text_3.enabled:=.f.
cad.text_4.enabled:=.f.
cad.button_1.enabled:=.t.
cad.button_2.enabled:=.f.

csql:="select * from cadastro order by id"
Try
 ret:=FDB:Execute(csql)
Catch e
 Error Connection FDB
 Return
End

if !ret:eof()
   while !ret:eof()
     _id:=alltrim(str(int(ret:fields["id"]:VALUE)))
     _dt:=ret:fields["data"]:VALUE
     _hr:=ret:fields["hora"]:VALUE
     _dd:=ret:fields["historico"]:VALUE

     add item { _id, _dt, _hr, _dd } to grid_1 of cad 

     ret:movenext()
   enddo
   if cad.grid_1.itemcount<>0
      cad.button_2.enabled:=.t.
   endif

   cad.grid_1.enabled:=.t.
   cad.grid_1.value:=1
   cad.grid_1.refresh
   cad.grid_1.setfocus
endif

RETU

FUNC GRAVAR()
if altera=0
   csql:="select max(id) ureg from cadastro"
   Try
    ret:=FDB:Execute(csql)
   Catch e
    Error Connection FDB
    Return
   End

   if ret:fields["UREG"]:VALUE<>NIL
      nreg:=ret:fields["UREG"]:VALUE+1
   else
      nreg:=1
   endif

   csql:="insert into cadastro values("
   csql+=str(int(nreg))+","
   csql+="'"+dtoc(date())+"',"
   csql+="'"+time()+"',"
   csql+="'Registro automatico')"
   Try
    FDB:Execute(csql)
   Catch e
    Error Connection FDB
    Return
   End
   cad.button_2.enabled:=.t.
else
   csql:="update cadastro set "
   csql+="data='"      +alltrim(cad.text_2.value)+"',"
   csql+="hora='"      +alltrim(cad.text_3.value)+"',"
   csql+="historico='" +alltrim(cad.text_4.value)+"'"
   csql+=" where id="+alltrim(cad.text_1.value)
   Try
    FDB:Execute(csql)
   Catch e
    Error Connection FDB
    Return
   End
   cad.text_2.enabled:=.f.
   cad.text_3.enabled:=.f.
   cad.text_4.enabled:=.f.
endif

ALTERA:=0
inicio()

RETU

FUNC ALTERAR()
altera:=1
cad.text_2.enabled:=.t.
cad.text_3.enabled:=.t.
cad.text_4.enabled:=.t.
cad.text_2.setfocus
RETU

FUNC EXCLUIR()
opc:=msgyesno("excluir o registro !","cuidado")
if opc=.t.
   csql:="delete from cadastro where id="+alltrim(cad.text_1.value)
   Try
     FDB:Execute(csql)
   Catch e
     Error Connection FDB
     Return
   End
endif

inicio()

RETU

func mostra_dados()
cad.text_1.value:=cad.grid_1.cell(cad.grid_1.value,1)
cad.text_2.value:=cad.grid_1.cell(cad.grid_1.value,2)
cad.text_3.value:=cad.grid_1.cell(cad.grid_1.value,3)
cad.text_4.value:=cad.grid_1.cell(cad.grid_1.value,4)
retu

CADASTRO.FDB

ID NUMBER 9
DATA CHAR 10
HORA CHAR 8
HISTORICO VARCHAR 50

Supondo que tenha instalado o firebird ODBC e usuário e senha são padrões (SYSDBA / masterkey), vai funcionar.

* O arquivo BANCO.INI, ADODB.CH e FBCLIENT.DLL (encontrado na pasta do firebird)
deverão estar na pasta do aplicativo

* Desculpe a falta de atenção com aparencia do teste, tá meio corrido hj...rs

qq dúvida estamos por aqui...rs

Luiz.

FBD no HMG

Enviado: 24 Abr 2013 09:11
por guanabara
Valeu, vou testar e retorno...

FBD no HMG

Enviado: 24 Abr 2013 11:10
por guanabara
Luiz, na compilação dá o seguinte erro:

Código: Selecionar todos

Harbour 3.2.0dev (Rev. 18706)
Copyright (c) 1999-2012, http://harbour-project.org/

D:\FDB\ADODB.CH(95) Error E0011  Empty optional clause in #translate/#command

D:\FDB\main.prg(16) Error E0030  Syntax error "syntax error at 'TOOLTIPBALLOON'"

D:\FDB\main.prg(45) Error E0030  Syntax error "syntax error at 'E'"

D:\FDB\main.prg(191) Error E0030  Syntax error "syntax error at 'E'"

D:\FDB\main.prg(193) Error E0025  Invalid RETURN from within of SEQUENCE code

D:\FDB\main.prg(224) Error E0030  Syntax error "syntax error at 'E'"

D:\FDB\main.prg(226) Error E0025  Invalid RETURN from within of SEQUENCE code

D:\FDB\main.prg(242) Error E0030  Syntax error "syntax error at 'E'"

D:\FDB\main.prg(244) Error E0025  Invalid RETURN from within of SEQUENCE code

D:\FDB\main.prg(255) Error E0030  Syntax error "syntax error at 'E'"

D:\FDB\main.prg(257) Error E0025  Invalid RETURN from within of SEQUENCE code

D:\FDB\main.prg(283) Error E0030  Syntax error "syntax error at 'E'"

D:\FDB\main.prg(285) Error E0025  Invalid RETURN from within of SEQUENCE code

13 errors

No code generated.
hbmk2: Erro: Executando o compilador Harbour (interno): 1
(C:\hmg.3.1.1\harbour\bin\harbour.exe) -n2 D:\FDB\main.prg -q -oC:\Users\Usuario\AppData\Local\Temp\hbmk_s4kjxv.dir\ -iC:\hmg.3.1.1\harbour\include -i. -iC:\hmg.3.1.1\include

o que pode ser ???

FBD no HMG

Enviado: 24 Abr 2013 16:36
por luiz antonio da silva
Olá Guanabara !

Me parece ser coisas simples (tipo versão de hmg), aqui na empresa só tenho minigui, em casa vou ver e posto o resultado blz.

Luiz.

FBD no HMG

Enviado: 24 Abr 2013 18:01
por guanabara
Beleza, to por aqui e não arredo o pé... hehhehehehhe

FBD no HMG

Enviado: 25 Abr 2013 11:19
por guanabara
Estou fazendo uns testes aqui e descobri o seguinte... Mudei o conteúdo do arquivo "adodb.ch" que você postou para um outro que achei aqui no Forum: https://pctoledo.org/download/agenda.rar que tem este mesmo arquivo mas com conteúdo diferente que segue:

Código: Selecionar todos

*
* Adodb.CH - Arquivo de Definição de Constantes do Sistema
*
//Tipo do Cursor
#Define adOpenForwardOnly     0  //adOpenForwardOnly = 0 # permite somente que você avance aos registros posteriores,perdendo-se os anteriores
#Define adOpenKeyset          1  //adOpenKeyset      = 1 # leitura e escrita (não permite ver alterações ou exclusões feitas por outros usuários)
#Define adOpenDynamic         2  //adOpenDynamic     = 2 # leitura e escrita (permite ver alterações ou exclusões feitas por outros usuários)
#Define adOpenStatic          3  //adOpenStatic      = 3 # permite somente leitura

//Tipo de travamento de Registros - LockType
#Define adLockReadOnly        1  //adLockReadOnly        = 1 somente leitura
#Define adLockPessimistic     2  //adLockPessimistic     = 2 Impede que outras sessões alterem o registro que estiver alocado pelo usuário
#Define adLockOptimistic      3  //adLockOptimistic      = 3 Todos podem alterar o mesmo registro
#Define adLockBatchOptimistic 4  //adLockBatchOptimistic = 4  Impede que outras sessões quando estiver em modo update batch

//Localização do Cursor - CursorLocation
#Define adUseServer  2
#Define adUseClient  3

//Estados dos RecordSets
#Define adEditNone       0
#Define adEditInProgress 1
#Define adEditAdd        2
#Define adEditDelete     4

//Tipos de dados retornados pelo DB
#Define RS_Empty              0     //Padrao Dbase C
#Define RS_TinyInt           16     //Padrao Dbase N
#Define RS_SmallInt           2     //Padrao Dbase N
#Define RS_integer            3     //Padrao Dbase N
#Define RS_BigInt            20     //Padrao Dbase N
#Define RS_UnsignedTinyInt   17     //Padrao Dbase N
#Define RS_UnsignedSmallInt  18     //Padrao Dbase N
#Define RS_UnsignedInt       19     //Padrao Dbase N
#Define RS_UnsignedBigInt    21     //Padrao Dbase N
#Define RS_Single             4     //Padrao Dbase N
#Define RS_Double             5     //Padrao Dbase N
#Define RS_currency           6     //Padrao Dbase N
#Define RS_Decimal           14     //Padrao Dbase N
#Define RS_Numeric          131     //Padrao Dbase N
#Define RS_Boolean           11     //Padrao Dbase N
#Define RS_Error             10     //Padrao Dbase C
#Define RS_UserDefined      132     //Padrao Dbase C
#Define RS_Variant           12     //Padrao Dbase C
#Define RS_IDispatch          9     //Padrao Dbase C
#Define RS_IUnknown          13     //Padrao Dbase C
#Define RS_GUID              72     //Padrao Dbase C
#Define RS_Date               7     //Padrao Dbase D
#Define RS_DBDate           133     //Padrao Dbase D
#Define RS_DBTime           134     //Padrao Dbase D
#Define RS_DBTimeStamp      135     //Padrao Dbase D
#Define RS_BSTR               8     //Padrao Dbase C
#Define RS_Char             129     //Padrao Dbase C
#Define RS_VarChar          200     //Padrao Dbase C
#Define RS_LongVarChar      201     //Padrao Dbase C
#Define RS_WChar            130     //Padrao Dbase C
#Define RS_VarWChar         202     //Padrao Dbase C
#Define RS_LongVarWChar     203     //Padrao Dbase C
#Define RS_Binary           128     //Padrao Dbase C
#Define RS_VarBinary        204     //Padrao Dbase C
#Define RS_LongVarBinary    205     //Padrao Dbase C
#Define RS_Chapter          136     //Padrao Dbase C
#Define RS_FileTime          64     //Padrao Dbase C
#Define RS_DBFileTime       137     //Padrao Dbase C
#Define RS_PropVariant      138     //Padrao Dbase C
#Define RS_VarNumeric       139     //Padrao Dbase C

#xcommand DECLARE CONNECTION <w> ;
   =>;
   #xtranslate <w>.\<p:BeginTrans,RollbackTrans,CommitTrans,close,execute\> => <w>:\<p\>;;

#xcommand DECLARE RECORDSET <w> ;
   =>;
   #xtranslate <w>.\<p:MoveNext,MovePrevious,MoveFirst,MoveLast,Find,AddNew,Update,Eof,Bof,close,CancelUpdate,Delete,Requery\> => <w>:\<p\>;;
   #xtranslate <w>->\<c>\.\<p:Value,Name,type\> => <w>:Fields\[\<(c)\>]:\<p\>;;
   #xtranslate <w>.\<c\>.\<p:Value,Name,type\> => YKKRETVALUE <w> \<(c)\> \<p\> 

   #xtranslate YKKRETVALUE <a> <b> <c> => <a>:Fields\[\<b>]:<c>

#xTranslate NEW RECORDSET <a>  => <a>:=CreateObject("ADODB.Recordset")
#xTranslate NEW CONNECTION <a> => <a>:=CreateObject("ADODB.Connection")
#command CLOSE CONNECTION <a> => <a>:close()
#command CLOSE RECORDSET <a> => <a>:close()
#xtranslate OPEN CONNECTION <b> STRING <(a)> => <b>:Open(<(a)>)
#command OPEN RECORDSET <a> CONNECTION <b> CURSORTYPE <d> LOCKTYPE <e> SQL <f> => <a>:Open(<f>,<b>,<d>,<e>)
#command ERROR CONNECTION <a> =>  if(<a>:Errors:Count>0,MsgStop("Erro Nativo: "+alltrim(Str(<a>:Errors\[0\]:NativeError))+chr(13)+chr(10)+"Descrição..: "+<a>:Errors\[0\]:Description),Nil)

/********************** Com estas linhas funciona com Harbour
*********************/
#ifdef __HARBOUR__
//ANNOUNCE HB_GTSYS
REQUEST HB_GT_GUI_DEFAULT
#xcommand TRY => BEGIN SEQUENCE WITH s_bBreak
#xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
#xcommand FINALLY => ALWAYS
static s_bBreak := { |oErr| break( oErr ) }
#endif
/********************* Com estas linhas funciona com Harbour
*********************/
daí compilei e apareceu apenas um erro nesta linha

Código: Selecionar todos

Set ToolTipBalloon On
, apaguei a mesma e compilei novamente daí criou o executável, só que o programa não localiza o banco dizendo "ERRO COM NA CONEXÃO COM FIREBIRD, TENTAR NOVAMENTE ?"... Então, nos meu testes anteriores cheguei nesse ponto também através deste link https://pctoledo.org/forum/viewto ... fdb#p81879 que você mesmo postou.... O que será que tá faltando ????? Vou tentando por aqui....

FBD no HMG

Enviado: 26 Abr 2013 07:47
por luiz antonio da silva
Olá Guanabara !

Desculpe a demora....fico contente que tenha conseguido resolver os problemas, o erro de conexão pode ser:

1) Drive ODBC (Firebird ODBC)
2) FBCLIENT.DLL faltando na pasta da aplicação
3) Falta do arquivo FDB...rs
4) Nome de usuário e senha do seu banco informados na linha de conexão ex:
UID=SYSDBA;PWD=masterkey
UID é o usuário
PWD é a senha.

um ou mais dos dados acima é o problema a ser resolvido aí...blz.

Luiz.

FBD no HMG

Enviado: 26 Abr 2013 20:26
por guanabara
Valeu Luiz, acertou na mosca, vamos de traz para frente para ficar bem claro para os amigos que estiverem acompanhando o desenrolar do Post:
luiz antonio da silva escreveu: 4) Nome de usuário e senha do seu banco informados na linha de conexão ex:
UID=SYSDBA;PWD=masterkey
UID é o usuário
PWD é a senha.
Essas informações já estavam preenchidas no seu código: ACFDB.PRG e não modifiquei.
3) Falta do arquivo FDB...rs
Pode rir mesmo, não é de duvidar que eu esqueça do banco, mas não foi dessa vez.
2) FBCLIENT.DLL faltando na pasta da aplicação
Também não esqueci, antes do seu post nem sabia da existência desse arquivo, mas copiei da Pasta do Firebird e já estava dentro da pasta FDB.
1) Drive ODBC (Firebird ODBC)
Foi aqui.... Outra coisa que não tinha conhecimento, pra mim quando instalava o Firebird já tava tudo certo, fiz o download http://ufpr.dl.sourceforge.net/project/ ... _Win32.exe, instalei o ODBC e daí 1000%, FUNCIONOU perfeitamente, fiz as modificações das tabelas conforme meu banco e nada mais, Obrigado mesmo Luiz arrumei uma outra pessoa pra dar trabalho..... Quem diga nosso amigo Pablo...... Como diz nós Araçatubenses.... Voooootttiiii meu.... hehehehhe :{

FBD no HMG

Enviado: 28 Abr 2013 20:56
por luiz antonio da silva
Olá Guanabara !

Fico muito contente que tenha dado tudo certo, é realmente fantástico quando vencemos novos obstáculos, aqui no forum sempre encontrei respostas para minhas dúvidas, o pessoal aqui tá de parabens, especialmente o Pablo, que além de muito conhecimento tem um coração apaixonado pelo que faz, e compartilha tudo o que sabe com muita alegria. :)Pos

Abraço.
Luiz.

FBD no HMG

Enviado: 28 Out 2015 10:42
por vilian
Amigos,

Podem me enviar link com algum drive ODBC para FireBird que vocês usem. Já baixei vários mas nada funcionando...

FBD no HMG

Enviado: 09 Nov 2015 23:56
por luiz antonio da silva
Boa Noite Vilian !

já tentou usar o que tá no link abixo ?
http://ufpr.dl.sourceforge.net/project/ ... _Win32.exe

uso já tem algum tempo sem problemas.

Abraço.
Luiz.