Pasar GDB (Firebird) a DBF

Post Reply
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Pasar GDB (Firebird) a DBF

Post by karinha »

Pasar GDB (Firebird) a DBF.

¿como puedo hacer?

Gracias, saludos.
João Santos - São Paulo - Brasil
User avatar
vilian
Posts: 795
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Pasar GDB (Firebird) a DBF

Post by vilian »

Karinha,

Fiz uma migração de uma base de dados alguns meses atrás usando ADO.

Code: Select all

#include "fivewin.ch"
#include "AdoDb.ch"

FUNCTION Main()
LOCAL cDirLoc,oError,CNN,oIni,cIpServ:="",cBcoDados,aDados:={},oCursor

   SET DATE BRIT
   cDirLoc := Rtrim(( CurDrive()+":\"+CurDir() ))
   cDirLoc += If(Right(cDirLoc,1)="\","","\")

   IF .NOT. File(cDirLoc+"vfatec.ini")
      MsgInfo("Aqruivo VFATEC.INI não encontrado !","Atenção")
   ELSE
      INI oIni FILE (cDirLoc+"vfatec.ini")
          GET cIpServ   SECTION "BancoDados" ENTRY "Ip"         OF oIni
          GET cBcoDados SECTION "BancoDados" ENTRY "ArquivoFdb" OF oIni
      ENDINI

      IF Empty(cIpServ) .OR. Empty(cBcoDados)
         MsgInfo("Configuração para acesso ao banco de dados não definida !","Atenção")
      ELSE
         TRY
             CNN:=CreateObject("ADODB.Connection")
             CNN:Open("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME="+cIpServ+":"+cBcoDados+";CHARSET=WIN1252;DIALECT=3;CLIENT=GDS32.dll")
             //CNN:Open("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=10.10.1.11:C:\tec2000\albano\analista2.fdb;CHARSET=WIN1252;DIALECT=3;CLIENT=GDS32.dll")
         CATCH oError
             Error Connection CNN
             RETURN nil
         END

         TRY
             oCursor:=CreateObject("ADODB.Recordset")
         CATCH oError
              Error Connection CNN
              RETURN nil
         END

         oCursor:Open("SELECT b.id_ponto,b.nosso_numero,b.valor_documento,b.processamento,p.nome_ponto FROM boleto_bancario AS b, ponto AS p WHERE b.valor_documento > 0 AND b.id_ponto=p.id_ponto and processamento > '2015-09-01'", CNN, 2, 3)

         oCursor:MoveFirst()
         DO WHILE .NOT. oCursor:Eof()
            Aadd(aDados,{oCursor:Fields["nosso_numero"]:Value, oCursor:Fields["processamento"]:Value, oCursor:Fields["nome_ponto"]:Value, oCursor:Fields["valor_documento"]:Value})
          oCursor:MoveNext()
         ENDDO
         xBrowse( aDados )
      ENDIF
   ENDIF

RETURN nil
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Pasar GDB (Firebird) a DBF

Post by karinha »

Obrigado meu querido Vilian, para usar este código, eu preciso ter o FirebIrd instalado? E se tiver senha no banco de dados do Firebird GDB, este código funciona?

Se tiver que instalar o Firebird, onde eu o consigo?

Perguntei aqui também:

http://fivewin.com.br/index.php?/topic/ ... ra-txtdbf/

Obg. e Forte abraços
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Pasar GDB (Firebird) a DBF

Post by karinha »

#include "AdoDb.ch" //-> Vilian, Não tenho este include.

Code: Select all


FIREBIR2.prg(28) Error E0030  Syntax error: "syntax error at 'CONNECTION'"

FIREBIR2.prg(35) Error E0030  Syntax error: "syntax error at 'CONNECTION'"
 

Code: Select all

   IF .NOT. File(cDirLoc+"vfatec.ini") // Vilian, Pode postar esse?
 
Obg. Abs.
João Santos - São Paulo - Brasil
User avatar
vilian
Posts: 795
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Pasar GDB (Firebird) a DBF

Post by vilian »

Karinha,

No vfatec.ini tem o IP do micro onde esta o banco e o arquivo FDB, Assim:

Code: Select all

[BancoDados]
Ip=10.10.1.11
ArquivoFdb=c:\temp\BANCOFB.FDB
Segue o arquivo ADoDb.ch

Code: Select all

*
* 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
*********************/
 
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Pasar GDB (Firebird) a DBF

Post by karinha »

Obrigado Vilian.

Vilian, com xHarbour me retorna esses erros:

Code: Select all

?firebir2.prg(45) Error E0030  Syntax error: "syntax error at 'WITH'"
?firebir2.prg(49) Error E0030  Syntax error: "syntax error at 'USING'"
?firebir2.prg(51) Error E0025  Invalid RETURN from within of SEQUENCE code
?firebir2.prg(54) Error E0030  Syntax error: "syntax error at 'WITH'"
?firebir2.prg(56) Error E0030  Syntax error: "syntax error at 'USING'"
?firebir2.prg(58) Error E0025  Invalid RETURN from within of SEQUENCE code
?firebir2.prg(70) Error E0030  Syntax error: "syntax error at 'ENDIF'"
?firebir2.prg(71) Error E0030  Syntax error: "syntax error at 'ENDIF'"
?firebir2.prg(73) Error E0025  Invalid RETURN from within of SEQUENCE code
 
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Pasar GDB (Firebird) a DBF

Post by karinha »

Vilian, com HARBOUR compila, mas me dá essa mensagem:

Image

O que me falta? Obg. abs.
João Santos - São Paulo - Brasil
User avatar
vilian
Posts: 795
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Pasar GDB (Firebird) a DBF

Post by vilian »

Karinha,

Não conheço muito de Firebird, aliás sei quase nada sobre ele. No cliente em que fiz a migração, executei esse programa no servidor deles onde o banco de dados rodava, então não precisei de mais nada. Pela mensagem que você enviou acredito que lhe falta uma fonte de dados ODBC para o Firebird.
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
quim
Posts: 27
Joined: Mon Apr 11, 2011 6:22 pm

Re: Pasar GDB (Firebird) a DBF

Post by quim »

Karinha

Si no quieres construir un ejecutable, puedes utilizar esta navaja suiza de los traspasos

http://www.vlsoftware.net/exportizer/

Espero que te guste

Obrigado
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Pasar GDB (Firebird) a DBF

Post by karinha »

Gracias, Quim, resuelto. Many thanks.
João Santos - São Paulo - Brasil
Post Reply