Pasar GDB (Firebird) a DBF.
¿como puedo hacer?
Gracias, saludos.
#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
FIREBIR2.prg(28) Error E0030 Syntax error: "syntax error at 'CONNECTION'"
FIREBIR2.prg(35) Error E0030 Syntax error: "syntax error at 'CONNECTION'"
IF .NOT. File(cDirLoc+"vfatec.ini") // Vilian, Pode postar esse?
[BancoDados]
Ip=10.10.1.11
ArquivoFdb=c:\temp\BANCOFB.FDB
*
* 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
*********************/
?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
Return to FiveWin para Harbour/xHarbour