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

    Importar txt

    anderson_cgms
    anderson_cgms
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 248
    Registrado : 26/03/2012

    Importar txt Empty Importar txt

    Mensagem  anderson_cgms 4/5/2016, 18:54

    Boas...


    como fazer importação de um texto sem delimitador

    porem na linha do código If Left(LinhaDoTexto, 1) Like "N" Then o "N" começa no caractere nº10, gostaria que o código percorresse este txt e ao encontra este N importasse a Data o nome e o valor R$...

    segue o código do mestre JPaulo.

    Public Sub ImportaSemDelimitadores()
    'By JPaulo ® Maximo Access
    Dim Delimitador As String
    Dim DB As Database
    Dim fnum As Integer
    Dim LinhaDoTexto, LinhaDoTextoTemp As String
    Dim InstrucaoSQL As String
    Dim Posicao As Integer
    Dim QtdDeRegistros As Long
    Dim ArquivoTexto As String
    Dim strBanco As Databases
    Dim strTabela As String

       ArquivoTexto = "D:\Desktop\DS\TesteImportacao.txt" 'caminho do arq de texto
       strTabela = "temp" 'nome da tabela no banco
       
       Delimitador = "|" 'defina aqui qual o delimitador
       
       If Delimitador = "" Then Delimitador = " "
       If Delimitador = "" Then Delimitador = vbTab

       fnum = FreeFile
       On Error GoTo NoTextFile
       Open ArquivoTexto For Input As fnum

       On Error GoTo NoDatabase
       Set DB = CurrentDb
       On Error GoTo 0

       Do While Not EOF(fnum)
           Line Input #fnum, LinhaDoTexto
                   
             'se existe texto, segue o código
             'If Len(LinhaDoTexto) > 0 Then
             
             'encontrar a linha com o inicio a começar por N
             If Left(LinhaDoTexto, 1) Like "N" Then
             
             'aqui deleta onde o texto começar por 4530*
              ' LinhaDoTextoTemp = Mid(LinhaDoTexto, 11, 255)
               'LinhaDoTexto = LinhaDoTextoTemp
             'End If
             
             'se existir uma linha em branco, passa para a proxima
             If Len(LinhaDoTexto) < 0 Then
                LinhaDoTexto = LinhaDoTexto + 1
             End If
               
             'percorre todo o texto do txt e adiciona à tabela
               InstrucaoSQL = "INSERT INTO " & _
                   strTabela & " VALUES ("
               Do While Len(LinhaDoTexto) > 0
                   Posicao = InStr(LinhaDoTexto, Delimitador)
                   If Posicao = 0 Then
                       InstrucaoSQL = InstrucaoSQL & _
                           "'" & LinhaDoTexto & "', "
                       LinhaDoTexto = ""
                   Else
                       InstrucaoSQL = InstrucaoSQL & _
                           "'" & Left$(LinhaDoTexto, Posicao - 1) & _
                           "', "
                       LinhaDoTexto = Mid$(LinhaDoTexto, Posicao + Len(Delimitador))
                   End If
               Loop

               InstrucaoSQL = Left$(InstrucaoSQL, Len(InstrucaoSQL) - 2) & ")"

               On Error GoTo SQLError
               DB.Execute InstrucaoSQL
               On Error GoTo 0
               QtdDeRegistros = QtdDeRegistros + 1
           
           End If

       Loop

       Close fnum
       DB.Close
       MsgBox "Inseridas " & Format$(QtdDeRegistros) & " Linhas"
       Exit Sub

    NoTextFile:
       MsgBox "Erro na abertura do Arquivo de Texto."
       Exit Sub

    NoDatabase:
       MsgBox "Erro na abertura do Banco."
       Close fnum
       Exit Sub

    SQLError:
       MsgBox "Erro na execusão do SQL '" & _
           InstrucaoSQL & "'"
       Close fnum
       DB.Close
       Exit Sub
    End Sub



    Exemplo TXT:


    Conta  24514    246004000000000 LUCROS DIST. ANTECIPADAMENTE
                                                      SALDO ANTERIOR................                                            0,00
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS RAFAEL PONTES RIBEIRO            2.670,72
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS VADIS INACIO PELIZZA             2.670,72
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS ADRIANA CUNHA PELIZZA            2.670,72
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS ALEXANDRE DE SOUZA CURY          2.670,73
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS  RUDNEY   DE   OLIVEIRA
                                                      RACHEL                                  2.670,73
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS RENATO LUCIO MARTINS             2.670,73
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS ANA PAULA C. PONTES              2.670,73
            N            20/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS   DANIELA  DE  OLIVEIRA
                                                      RODRIGUES                               2.670,73
            N            21/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS RAFAEL PONTES RIBEIRO            3.800,14
            N            21/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS VADIS INACIO PELLIZA             3.800,14
            N            21/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS ADRIANA CUNHA PELIZZA            3.800,14
            N            21/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS ALEXANDRE DE SOUZA CURY          3.800,15
            N            21/01      DIV               DEB.C/C   PG  DISTRIBUICAO  DE
                                                      LUCROS  RUDNEY   DE   OLIVEIRA
                                                      RACHEL                                  3.800,15



    Att,
    anderson_cgms
    anderson_cgms
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 248
    Registrado : 26/03/2012

    Importar txt Empty Re: Importar txt

    Mensagem  anderson_cgms 5/5/2016, 16:24

    up

      Data/hora atual: 20/1/2022, 11:44