MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Comparar e validar campos antes de importar arquivo OFX

    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    Comparar e validar campos antes de importar arquivo OFX Empty Comparar e validar campos antes de importar arquivo OFX

    Mensagem  JSommavilla 20/12/2017, 02:32

    Prezados, boa noite!

    Gostaria de fazer importação do arquivo OFX para o meu BD. Já tenho o código que importa os dados e está funcionando perfeitamente. Gostaria de importar esses dados com maior segurança, para fazer as devidas referencias corretas com as contas já pré cadastradas no BD.

    Gostaria de comparar os dois campos abaixo que vêm no arquivo OFX:

    Campo que informa o numero do banco:
    0341

    Campo que informa o numero da agencia (2222) e o numero da conta corrente já com o digito verificador (444444)
    2222444444

    No meu BD tenho uma tabela onde estão os dados das contas bancarias, como segue:

    nomedobanco - (Nome do banco Exemplo: Itau)
    idbanco - (numero do banco: Exemplo: 0341)
    idconta - (numero da agencia e conta corrente: Exemplo: 2222444444)
    conta - (numero da conta contábil: Exemplo: 10101)


    O que eu quero fazer é que antes de concretizar a importação, um código que permita checar se o numero do banco e da conta corrente estão corretos.

    A lógica é mais ou menos assim:

    se idbanco (BD) for igual a (campo arquivo OFX)  E  idconta (BD) for igual a (campo arquivo OFX), então importar

    caso contrario

    msgbox " banco e conta corrente não conferem com o arquivo OFX"

    Também gostaria de poder selecionar a data dos lançamentos a importar do arquivo OFX, como por exemplo: (campo arquivo OFX) da seguinte forma:

    entre [Me.Dtinicial] e [Me.Datfinal]


    Sei que isso pode ser dentro de uma condição "IF", já tentei mas não consegui fazer que os campos sejam comparados.

    Segue abaixo o código completo que uso para a importação do arquivo OFX para que alguém me oriente onde e como colocar essas condições. Creio que é na "SELECT CASE ROTULO":


    Código:
    Public Function ImportaOFX(ByVal caminho As String, ByVal cConta As String)

    Dim db As Database
    Dim rs As Recordset
    Dim r As Recordset
    Dim CodOFx As Integer
    Dim Sec As Variant
    Dim Rotulo As String
    Dim Linha As String
    Set db = CurrentDb

    caminho = Me.txtCaminho
    cConta = Me.txtConta

    'Abrir arquivo, adicionar novo extrato na tabela OFX
    '---------------------------------------------------

    nFileNum = FreeFile
    Open caminho For Input As nFileNum

    'Abrir tabela tbl_OFX e adicionar novo extrato
    Set r = db.OpenRecordset("tbl_OFX", dbOpenDynaset)
    r.AddNew
    r!NomeExtrato = "EXT-" & cConta & Format(Time, "HHssmm")
    r!Data = Format(Date, "dd/mm/yyyy", vbUseSystemDayOfWeek, vbUseSystem)
    r!Conta = cConta

    'Percorre linha por linha do arquivo
    Do Until EOF(nFileNum)
    Line Input #nFileNum, slinetext

    If slinetext = "" Then 'se a linha é vazia, vai pra próxima!
    GoTo pulalinha
    End If

    Linha = LTrim(Replace(slinetext, vbTab, " ")) 'Substitui as tabulações por espaços e corta os espaços
    Sec = Split(Linha, ">", 2, vbTextCompare) 'Secciona a linha até o caracter >
    Rotulo = Sec(0) 'pega a primeira parte da seção

    Select Case Rotulo
    Case Is = "<BANKID"
    r!idbanco = Mid(Linha, 9, 4)
    Case Is = "<ACCTID"
    r!idconta = Mid(Linha, 9, 15)
    Case Is = "<DTSTART"
    r!dti = DateSerial(Int(Mid(Linha, 10, 4)), Int(Mid(Linha, 14, 2)), Int(Mid(Linha, 16, 2)))
    Case Is = "<DTEND"
    r!dtf = DateSerial(Int(Mid(Linha, 8, 4)), Int(Mid(Linha, 12, 2)), Int(Mid(Linha, 14, 2)))
    End Select
    pulalinha:
    'Form_OFXimport.pbar.Value = Form_OFXimport.pbar.Value + 0.1 'Barra de progresso
    Loop

    r.Update
    r.MoveLast

    CodOFx = r!cod 'pega o código do extrato salvo para vincular os movimentos

    r.Close
    Close nFileNum
    Set r = Nothing

    'Agora lançar os movimentos
    '-------------------------------------------------------------------------

    Open caminho For Input As nFileNum 'abre o mesmo arquivo

    Set rs = db.OpenRecordset("tbl_SubOFX", dbOpenDynaset) 'abre a tabela para receber os dados

    Do Until EOF(nFileNum)
    Line Input #nFileNum, slinetext

    If slinetext = "" Then 'se a linha é vazia, pula ela!
    GoTo passadireto
    End If

    Linha = LTrim(Replace(slinetext, vbTab, " ")) 'substitui as tabulações por espaços e corta os espaços
    Sec = Split(Linha, ">", 2, vbTextCompare) 'secciona a linha (>Piscando
    Rotulo = Sec(0) 'pega a primeira parte da seção

    Select Case Rotulo
    Case Is = "<STMTTRN"
    rs.AddNew
    Case Is = "<TRNTYPE"
    'define o tipo = 1 ou 2 e armazena
    If Mid(Linha, 10, 5) = "DEBIT" Then
    rs!Tipo = 2
    Else
    rs!Tipo = 1
    End If
    Case Is = "<DTPOSTED"
    'armazena a data
    rs!Data = DateSerial(Int(Mid(Linha, 11, 4)), Int(Mid(Linha, 15, 2)), Int(Mid(Linha, 17, 2)))
    Case Is = "<TRNAMT"
    'armazena o valor
    If rs!Tipo = 1 Then
    rs!Valor = Replace(Mid(Linha, 9), ".", ",")
    Else
    rs!Valor = Replace(Mid(Linha, 10), ".", ",")
    End If
    Case Is = "<CHECKNUM"
    'armazena o cheque
    rs!doc = Mid(Linha, 11, 6)
    Case Is = "<MEMO"
    'armazena o memorando
    rs!Memorando = Mid(Linha, 7, 50)
    Case Is = "</STMTTRN"
    'armazena o CODOFX
    rs!OFX = CodOFx
    rs.Update
    Case Is = "</OFX"
    rs.Close
    'sai da função
    End Select
    passadireto:

    Loop

    Close nFileNum

    MsgBox "Arquivo OFX importado com sucesso!", vbInformation, "Mensagem"

    Set db = Nothing
    Set rs = Nothing
    End Function


    Agradeço muito por essa ajuda!
    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    Comparar e validar campos antes de importar arquivo OFX Empty Re: Comparar e validar campos antes de importar arquivo OFX

    Mensagem  JSommavilla 9/2/2018, 01:39

    Alguma ajuda neste caso?

    Obrigado.
    avatar
    apxporcristo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 03/11/2010

    Comparar e validar campos antes de importar arquivo OFX Empty OFX

    Mensagem  apxporcristo 11/10/2022, 01:40

    Estou tentado fazer a leitura de um arquivo ofx pelo VBA, porem tem um codigo aqui no site eu apliquei ele.

    Masi quando foi lança os movimentos, eu vejo que ele pega a primeira seção do arquivo e passa pelo codigo, porem quando ele e para pega a segunda seção ele sai do codigo.
    não da continuaidade, alguem pode me ajudar para saber aonde esta o erro nesse codigo.

    Segue o Codigo abaixo:


    Public Function ImportaOFX(ByVal caminho As String, ByVal cConta As String)

    Dim db As Database
    Dim rs As Recordset
    Dim Sec As Variant
    Dim Rotulo As String
    Dim Linha As String
    Set db = CurrentDb

    caminho = Me.txtCaminho

    nFileNum = FreeFile

    'Agora lançar os movimentos
    '-------------------------------------------------------------------------

    Open caminho For Input As nFileNum 'abre o mesmo arquivo

    Set rs = db.OpenRecordset("tbl_SubOFX", dbOpenDynaset) 'abre a tabela para receber os dados

    Do Until EOF(nFileNum)
    Line Input #nFileNum, slinetext

    If slinetext = "" Then 'se a linha é vazia, pula ela!
    GoTo passadireto
    End If

    Linha = LTrim(Replace(slinetext, vbTab, " ")) 'substitui as tabulações por espaços e corta os espaços
    Sec = Split(Linha, ">", 2, vbTextCompare) 'secciona a linha (>Piscando
    Rotulo = Sec(0) 'pega a primeira parte da seção

    Select Case Rotulo
    Case Is = "

    Conteúdo patrocinado


    Comparar e validar campos antes de importar arquivo OFX Empty Re: Comparar e validar campos antes de importar arquivo OFX

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 14:39