Tenho um sistema em Clipper52e e trabalho com o MS-Money. Interligá-los é uma novela. Preciso importar dados para o Money, mas este somente aceita importar dados do Quicken.
Preciso de um financ (caixa,bancos) que aceite o formato DBF. Alguém conhece algum sistema ou tem algum para vender ?
Financ compatível com DBF
Moderador: Moderadores
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinha
Tempos atras postei algo relacionado ao tema pois uso o arquivo estilo MONEY do Unibanco.
Veja em:
https://pctoledo.org/forum/viewto ... hlight=xml
Tempos atras postei algo relacionado ao tema pois uso o arquivo estilo MONEY do Unibanco.
Veja em:
https://pctoledo.org/forum/viewto ... hlight=xml
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Você é um gênio Rochinha !. Fiquei curioso de saber no início do seu código menciona: Poderia postar ou explicar como funcionam essas funções (SeekIniDt e SeekFimDt) ?
Eliane, você poderia postar parte (digamos um trecho) do arquivo só para ver o formato ?. E conseguiu fazer o seu TBROWSE ? (só pra saber).
Um clip-abraço :)Pos
Código: Selecionar todos
cIDt := SeekIniDt("OFX\"+aDIRECTORY[I,1])
cFDt := SeekFimDt("OFX\"+aDIRECTORY[I,1]) Eliane, você poderia postar parte (digamos um trecho) do arquivo só para ver o formato ?. E conseguiu fazer o seu TBROWSE ? (só pra saber).
Um clip-abraço :)Pos
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
Desculpem minha demora em responder mas perdi meu pai recentemente e estou numa correria louca para resolver problemas de heranças e dividas, auxiliando minha madrasta..
Mas tentarei estar devolvendo as respostas o mais rapido que puder.
Quanto as funções foi falha minha não inclui-las no post mas estarei resolvendo isto.
Desculpem minha demora em responder mas perdi meu pai recentemente e estou numa correria louca para resolver problemas de heranças e dividas, auxiliando minha madrasta..
Mas tentarei estar devolvendo as respostas o mais rapido que puder.
Quanto as funções foi falha minha não inclui-las no post mas estarei resolvendo isto.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
Como prometido:
Como prometido:
Código: Selecionar todos
Function PegaOFX()
M->REGISTRO := RECNO()
M->DESDE := DATA
M->IDCONTA := IDCONTA
Mensagem('Verificando arquivos de retorno...')
aDIRECTORY := DIRECTORY("OFX\*.OFX")
aOFXes := {}
FOR I = 1 TO LEN(aDIRECTORY)
cIDt := SeekIniDt("OFX\"+aDIRECTORY[I,1])
cFDt := SeekFimDt("OFX\"+aDIRECTORY[I,1])
AADD( aOFXes, PADR(aDIRECTORY[I,1],13)+" "+cIDt+" "+cFDt )
NEXT
SELE SALDO
M->IDOFX := SPACE(15) // ALLTRIM(M->IDCONTA) + ".OFX"
M->DESDE := DATE()
M->ATE := DATE()
DEFINE DIALOG oDlg RESOURCE "dlgCXAbre" TITLE "Integracao bancaria"
REDEFINE SAY oSay ID 099 OF oDlg
REDEFINE SAY oSay ID 100 OF oDlg
REDEFINE COMBOBOX oGet101 VAR M->IDOFX ID 101 ITEMS aOFXes OF oDlg
oGet101:bKeyDown := {|nKey,nFlags|if(nKey==VK_RETURN,(oGet101:LostFocus(oGet101),oGet102:SetFocus()),),nil}
REDEFINE GET oGet102 VAR M->DESDE ID 102 OF oDlg
REDEFINE GET oGet103 VAR M->ATE ID 103 OF oDlg
REDEFINE BUTTON ID 5 OF oDlg ACTION ( lSave := .t. , oDlg:End() ) DEFAULT
REDEFINE BUTTON ID 2 OF oDlg ACTION ( lSave := .f. , oDlg:End() )
ACTIVATE DIALOG oDlg CENTERED
IF !EMPTY(M->IDOFX)
//PSQOFX(M->IDOFX)
//CLOSE DATABASES
//ARQ_PRN1 := ".\BANCOS\" + M->IDOFX
ARQ_PRN1 := "OFX\" + ALLTRIM(SUBSTR( M->IDOFX, 1, 14 ))
DBCREATE( "NFOFX2", { { "LI_NHA" , "C",255, 0 } } )
DBCREATE( "NFOFX3", { { "IDBANCO" , "C",20, 0 } , ;
{ "IDCONTA" , "C",20, 0 } , ;
{ "AGENCIA" , "C", 6, 0 } , ;
{ "DATA" , "D", 8, 0 } , ;
{ "HISTORICO" , "C",45, 0 } , ;
{ "DOCUMENTO" , "C",10, 0 } , ;
{ "VALOR" , "N",14, 2 } , ;
{ "CREDITO" , "N",14, 2 } , ;
{ "DEBITO" , "N",14, 2 } , ;
{ "TIPO" , "C", 1, 0 } , ;
{ "CONCILIADO", "D", 8, 0 } , ;
{ "FECHAMENTO", "L", 1, 0 } } )
USE NFOFX3 NEW
USE NFOFX2 NEW
APPEND FROM &ARQ_PRN1 SDF
GO TOP
M->BANKID := ''
M->ACCTID := ''
M->TRNTYPE := ''
M->DTPOSTED := ''
M->TRNAMT := ''
M->FITID := ''
M->CHECKNUM := ''
M->MEMORAND := ''
M->CABECA := .F.
Mensagem('Verificando registros...')
DO WHILE .NOT. EOF()
IF '<BANKID>' $ LI_NHA
M->BANKID := SUBSTR(LI_NHA,9,05)
ENDIF
IF '<ACCTID>' $ LI_NHA
M->ACCTID := SUBSTR(LI_NHA,9,15)
ENDIF
IF '<TRNTYPE>' $ LI_NHA
M->TRNTYPE := SUBSTR(LI_NHA,10,40)
ENDIF
IF '<DTPOSTED>' $ LI_NHA
M->DTPOSTED := CTOD(SUBSTR(LI_NHA,17,2)+'/'+;
SUBSTR(LI_NHA,15,2)+'/'+;
SUBSTR(LI_NHA,11,4))
ENDIF
IF '<TRNAMT>' $ LI_NHA
M->TRNAMT := VAL(SUBSTR(LI_NHA,9,15))
ENDIF
IF '<FITID>' $ LI_NHA
M->FITID := SUBSTR(LI_NHA,8,15)
ENDIF
IF '<CHECKNUM>' $ LI_NHA
M->CHECKNUM := SUBSTR(LI_NHA,11,15)
ENDIF
IF '<MEMO>' $ LI_NHA
M->MEMORAND := SUBSTR(LI_NHA,7,40)
ENDIF
IF '<STMTTRN>' $ LI_NHA
SELE NFOFX3
APPEND BLANK
SELE NFOFX2
ENDIF
IF '</STMTTRN>' $ LI_NHA
SELE NFOFX3
REPLACE IDBANCO WITH M->BANKID
REPLACE IDCONTA WITH SUBSTR(M->ACCTID,5,9)
REPLACE AGENCIA WITH SUBSTR(M->ACCTID,1,4)
REPLACE DATA WITH M->DTPOSTED
REPLACE HISTORICO WITH STRTRAN(M->MEMORAND,'*','')
REPLACE DOCUMENTO WITH M->CHECKNUM
REPLACE VALOR WITH IIF(M->TRNAMT<0,M->TRNAMT*-1,M->TRNAMT)
REPLACE CREDITO WITH IIF(M->TRNTYPE='C',M->TRNAMT,0)
REPLACE DEBITO WITH IIF(M->TRNTYPE='D',IIF(M->TRNAMT<0,M->TRNAMT*-1,M->TRNAMT),0)
REPLACE TIPO WITH M->TRNTYPE
REPLACE CONCILIADO WITH CTOD(' / / ')
REPLACE FECHAMENTO WITH .F.
SELE NFOFX2
ENDIF
SKIP
ENDDO
SELE NFOFX3
APPEND BLANK
SELE NFOFX2
ENDIF
SELE NFOFX3; USE
SELE NFOFX2; USE
SELE CORRENTE
USE
USE CORRENTE EXCLUSIVE
Mensagem('Adicionando registros ao movimento...')
APPEND FROM NFOFX3 FOR DATA >= M->DESDE .AND. DATA <= M->ATE
USE
USE CORRENTE SHARED NEW
SET ORDER TO 1
return .t.
FUNCTION PSQOFX(OFX)
//IF FILE( ".\BANCOS\"+ALLTRIM(OFX) )
IF FILE( ALLTRIM(OFX) )
RETURN .T.
ENDIF
MsgStop("Arquivo "+ALLTRIM(OFX)+" n„o encontrado!")
RETURN .F.
FUNCTION SeekIniDt( cText )
DBCREATE( "NFOFX0", { { "LI_NHA" , "C",255, 0 } } )
USE NFOFX0 NEW
APPEND FROM &cText SDF
GO TOP
cIDt := ''
DO WHILE .NOT. EOF()
IF '<DTSTART>' $ LI_NHA
cIDt := SUBSTR(LI_NHA,10,10)
EXIT
ENDIF
SKIP
ENDDO
//cIDt := CTOD(SUBSTR(cIDt,7,2)+"/"+SUBSTR(cIDt,5,2)+"/"+SUBSTR(cIDt,1,4))
cIDt := SUBSTR(cIDt,7,2)+"/"+SUBSTR(cIDt,5,2)+"/"+SUBSTR(cIDt,1,4)
USE
return cIDt
FUNCTION SeekFimDt( cText )
DBCREATE( "NFOFX0", { { "LI_NHA" , "C",255, 0 } } )
USE NFOFX0 NEW
APPEND FROM &cText SDF
GO TOP
cFDt := ''
DO WHILE .NOT. EOF()
IF '<DTEND>' $ LI_NHA
cFDt := SUBSTR(LI_NHA,08,10)
EXIT
ENDIF
SKIP
ENDDO
//cFDt := CTOD(SUBSTR(cFDt,7,2)+"/"+SUBSTR(cFDt,5,2)+"/"+SUBSTR(cFDt,1,4))
cFDt := SUBSTR(cFDt,7,2)+"/"+SUBSTR(cFDt,5,2)+"/"+SUBSTR(cFDt,1,4)
USE
return cFDt
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
