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

    [Resolvido]Importar TXT para tabela linha a linha

    avatar
    microfit
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 06/12/2016

    [Resolvido]Importar TXT para tabela linha a linha Empty [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  microfit 30/12/2017, 00:35

    Boa noite amigos!

    Meu desafio é o seguinte...

    Tenho um arquivo txt que é gerado de minha lojavirtual e preciso importa-lo para minha tabela.
    E meu grande problema é, as informaçoes que devem ser importadas do txt para a tabela, sao organizadas linha a linha no arquivo txt.

    Exemplo:
    No txt esta assim

    CodigoCliente: 10
    NomeCliente: Fulano de Tal
    Endereco: Rua Primeira 10

    Desta maneira preciso incluir estes dados em minha tabela, com contem os campos de mesmo nome, exemplo.

    CodigoCliente
    NomeCliente
    Endereco

    Obs.
    Cada arquivo txt gerado pela lojavirtual é referente á um unico cadastro.

    Já tentei de todas as maneiras, até onde meu conhecimento pode.
    Por isso gostaria da ajuda dos amigos.

    Em anexo um modelo do txt
    Um grande abraço a todos.
    Anexos
    [Resolvido]Importar TXT para tabela linha a linha Attachment24.txt
    Você não tem permissão para fazer download dos arquivos anexados.
    (1 Kb) Baixado 32 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Alvaro Teixeira 3/1/2018, 08:36

    Olá Trindade, Bem-Vindo ao fórum.

    Já tentou a "Busca" aqui do fórum, veja como fazer:
    https://www.maximoaccess.com/t1115-busca-no-forum-search

    Este por exemplo:
    https://www.maximoaccess.com/t26035p18-resolvidoimportar-arquivo-txt-com-30-linhas-por-registo

    Abraço
    avatar
    microfit
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 06/12/2016

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  microfit 4/1/2018, 20:58

    Maravilha mestre!
    Vou fazer os testes e já retorno, estando tudo certo, publicarei no exemplos!
    Grande abraço!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Alvaro Teixeira 5/1/2018, 12:17

    Olá Trindade Junior,

    Através do exemplo do tópico abaixo, adaptei para o que pretende:
    https://www.maximoaccess.com/t24141-resolvidoimportar-varios-ficheiros-txt-para-uma-so-tabela-adicionando-o-nome-do-ficheiro-a-um-campo

    Veja o código uilizado:
    Código:
    Option Compare Database
    'requer referencia Microsoft Scripting Runtime
    Dim fso As New FileSystemObject
    Dim fld As folder


    Private Sub cmdImportar_Click()
    '------------------------------------------------------------
    ' IMPORTAR VARIOS FICHEIROS TXT DE UMA PASTA
    ' ahteixeira 2018 - maximoaccess
    '------------------------------------------------------------
                
    Dim sFol As String, sFile As String, strLinha As String, nDirs As Long, _
        linha As Double, nFiles As Long, tFld As folder, tFil As File, FileName As String
      
    Dim sCodigoPedido, sDataPedido, sLocalVenda, sStatus


    On Error GoTo IMPORTAR_Err
          
                    sFol = Me.Local & "\"
           sFile = "*.txt"
          
           Set fld = fso.GetFolder(sFol)
           FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
                          vbHidden Or vbSystem Or vbReadOnly)
          
           If Len(FileName) > 0 Then
              
               While Len(FileName) <> 0
            
                  nFiles = nFiles + 1
                  
                        'ficheiro ler
                        Open fso.BuildPath(fld.Path, FileName) For Input As #1
                        
                        linha = 0
                        
                        'ler linha a linha até ao fim do ficheiro
                        Do Until EOF(1)
                            linha = linha + 1
                            Line Input #1, strLinha
                                
                                If linha = 1 Then sCodigoPedido = Replace(strLinha, "CodigoPedido ", "")
                                If linha = 2 Then sDataPedido = Replace(strLinha, "DataPedido ", "")
                                If linha = 3 Then sLocalVenda = Replace(strLinha, "LocalVenda ", "")
                                If linha = 4 Then sStatus = Replace(strLinha, "Status ", "")
                        Loop
                        
                        'fechar ficheiro
                        Close #1
                        DoEvents
                        
                        'consulta acrescentar dados à tabela
                        CurrentDb.Execute "INSERT INTO tblPedidos (CodigoPedido, DataPedido, LocalVenda, Status) SELECT " _
                                          & sCodigoPedido & " , '" & sDataPedido & "' , '" & sLocalVenda & "' , '" & sStatus & "';"
                        
                        DoEvents
                        
                        'se quisermos eliminar o ficheiro importado
                        'Kill fso.BuildPath(fld.Path, FileName)
                        
                  ' Obter ficheiro seguinte
                  FileName = Dir()
                  DoEvents
               Wend
        
                  MsgBox "Processados  " & nFiles & "  ficheiro(s).", vbInformation, ""
              Else
                  MsgBox "Não foram encontrados ficheiros.", vbInformation, ""
                  Exit Sub
              End If
        
        
    IMPORTAR_Exit:
            Exit Sub
        
    IMPORTAR_Err:
            MsgBox Error$
            Resume IMPORTAR_Exit
        
    End Sub

    Abraço
    Anexos
    [Resolvido]Importar TXT para tabela linha a linha AttachmentImportarVariosTXTdeUmaPasta.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (27 Kb) Baixado 36 vez(es)
    avatar
    microfit
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 06/12/2016

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  microfit 5/1/2018, 14:03

    Só falta a cereja do bolo!
    Mestre testei seu ultimo exemplo, 100% funcional exatamente isso!

    Porem...
    Os arquivos txt que recebo possuem : após o nome de referencia da linha.
    Conforme exemplo abaixo.

    CodigoPedido: 24
    DataPedido: 2017-12-15-15:25
    LocalVenda: MERCADO LIVRE
    Status: A ENVIAR

    Assim, inclui o sinal : após cada referencia da linha, conforme necessito, entao apresentou o erro:
    ERRO de sintaxe (operador faltando) na expressão de consulta 'CodigoPedido:24'.

    Obs. Sem o sinal : funciona perfeitamente da maneira correta!
    Desde já, obrigado pela ajuda mestre!


    Última edição por microfit em 6/1/2018, 15:26, editado 1 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Alvaro Teixeira 5/1/2018, 14:16

    Olá Trindade Junior,

    Obrigado pelo retorno, estou no celular, mas é só ajustar as 4 linhas onde tem o REPLACE
    Adicione os dois pontos, exemplo:

    If linha = 1 Then sCodigoPedido = Replace(strLinha, "CodigoPedido: ", "")

    Abraço
    avatar
    microfit
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 06/12/2016

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  microfit 6/1/2018, 04:24

    Boa mestre... agora para fechar com chave de ouro!
    Tenho mais um desafio...

    Até agora esta perfeito, todos os teste estao funcionais, porem...
    Algumas linhas do .txt original possuem campos "na mesma linha" preciso que este campos sejam incluidos em colunas na tabela.
    Cada campo do txt deve ser separado e inserido em colunas da tabela.
    Este campos na txt sao separados por | abaixo exemplo:

    ProdutoVendido: 22|Nome do Produto|25.6|1|25.6|0|

    Estes devem ficar na tabela:

    CodProduto  NomeProduto        Preco    Unidade   Total
    22               Nome do Produto   25.60   1             25.6

    Mestre, desde já meu muito obrigado pela ajuda.
    Resolvendo este desafio acima resolve minha vida!

    Grande abraço mestre!


    Última edição por microfit em 6/1/2018, 15:26, editado 1 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Alvaro Teixeira 6/1/2018, 09:29

    Olá Trindade Júnior,

    Antes de tudo, não deve colocar mais nada no título do tópico, por razões de pesquisa no fórum.
    Coloca-se na primeira mensagem do tópico e depois o sistema repete automaticamente.
    Edite as últimas duas mensagens movendo o texto do título para a caixa de mensagem, ficando em branco.

    Quanto à nova questão, poste alguns txt de exemplo é a tabela que vai receber os dados.
    Assim fica mais fácil para ver o que se pode fazer.

    Abraço
    avatar
    microfit
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 06/12/2016

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  microfit 6/1/2018, 16:06

    Boa tarde Mestre!

    Em anexo segue minha necessidade.

    Preciso que:
    Os dados da linha no txt após o | sejam incluídos em outro campo da tabela.
    No BD exemplo em anexo sera possível entender melhor.

    Desde já obrigado pela ajuda e já editei as respostas anteriores conforme sua instrução.
    Após este ajuste publicarei o BD funcional, para que possa ajudar outros amigos.

    Grande abraço!
    Anexos
    [Resolvido]Importar TXT para tabela linha a linha AttachmentImportarTxtPasta.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (47 Kb) Baixado 17 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Alvaro Teixeira 15/1/2018, 12:32

    Olá Trindade Junior,

    Para o efeito um SPLIT resolve, está na hora de colocar a mão na massa.
    Fiz a alteração para a linha 5, deverá fazer dentro do mesmo para a linha 6.
    Teste o seu exemplo com o código abaixo:

    Código:
    Option Compare Database
    Option Explicit


    Private Sub cmdImportar_Click()
    '--------------------------------------------------------------------------------
    ' Álvaro Teixeira (ahteixeira) 2018
    ' Importar varios ficheiros TXT de uma pasta e fazer separação em algumas linhas
    ' Para Maximoaccess
    ' http://www.maximoaccess.com/t32187-importar-txt-para-tabela-linha-a-linha
    ' Requer referencia Microsoft Scripting Runtime
    '--------------------------------------------------------------------------------
    Dim fso As New FileSystemObject
    Dim fld As folder

    Dim sFol As String, sFile As String, strLinha As String, nDirs As Long, _
        linha As Double, nFiles As Long, tFld As folder, tFil As File, FileName As String
     
    Dim sCodigoPedido, sDataPedido, sLocalVenda, sStatus, sNomeCliente, sNickCliente, sProdutoVendido
    Dim arrCliente

    On Error GoTo IMPORTAR_Err
         
                    sFol = Me.Local & "\"
          sFile = "*.txt"
         
          Set fld = fso.GetFolder(sFol)
          FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
                          vbHidden Or vbSystem Or vbReadOnly)
         
          If Len(FileName) > 0 Then
             
              While Len(FileName) <> 0
           
                  nFiles = nFiles + 1
                 
                        'ficheiro ler
                        Open fso.BuildPath(fld.Path, FileName) For Input As #1
                       
                        linha = 0
                       
                        'ler linha a linha até ao fim do ficheiro
                        Do Until EOF(1)
                            linha = linha + 1
                            Line Input #1, strLinha
                               
                                If linha = 1 Then sCodigoPedido = Replace(strLinha, "CodigoPedido: ", "")
                                If linha = 2 Then sDataPedido = Replace(strLinha, "DataPedido: ", "")
                                If linha = 3 Then sLocalVenda = Replace(strLinha, "LocalVenda: ", "")
                                If linha = 4 Then sStatus = Replace(strLinha, "Status: ", "")
                               
                                If linha = 5 Then
                                    sNomeCliente = Replace(strLinha, "NomeCliente: ", "")
                                    arrCliente = Split(sNomeCliente, "|")
                                    sNomeCliente = Trim(arrCliente(0))
                                    sNickCliente = Trim(arrCliente(1))
                                End If
                               
                                If linha = 6 Then sProdutoVendido = Replace(strLinha, "ProdutoVendido: ", "")
                        Loop
                       
                        'fechar ficheiro
                        Close #1
                        DoEvents
                       
                        'consulta acrescentar dados à tabela
                        CurrentDb.Execute "INSERT INTO tblPedidos (CodigoPedido, DataPedido, LocalVenda, Status, NomeCliente, NickCliente, CodProduto) SELECT " _
                                          & sCodigoPedido & " , '" & sDataPedido & "' , '" & sLocalVenda & "' , '" & sStatus & "' , '" & sNomeCliente & "','" & sNickCliente & "','" & sProdutoVendido & "';"
                       
                        DoEvents
                       
                        'para eliminar o ficheiro importado
                        'Kill fso.BuildPath(fld.Path, FileName)
                       
                  ' Obter ficheiro seguinte
                  FileName = Dir()
                  DoEvents
              Wend
       
                  MsgBox "Processados  " & nFiles & "  ficheiro(s).", vbInformation, ""
              Else
                  MsgBox "Não foram encontrados ficheiros.", vbInformation, ""
                  Exit Sub
              End If
       
       
    IMPORTAR_Exit:
            Exit Sub
       
    IMPORTAR_Err:
            MsgBox Error$
            Resume IMPORTAR_Exit
       
    End Sub

    Abraço
    avatar
    microfit
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 06/12/2016

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  microfit 15/1/2018, 13:01

    Ola mestre...

    Partindo de sua instrução inicial...
    Consegui resolver usando exatamente o Split, porem com o MID na linha.

    Mto obrigado pelas dicas mestre.
    Espero que este Topico ajude outros que necessitarem.

    Grato pela experiencia.
    Grande abraço a todos!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Alvaro Teixeira 15/1/2018, 16:49

    Olá Trindade Junior,

    Obrigado pelo retorno, o fórum agradece.

    Abraço

    Conteúdo patrocinado


    [Resolvido]Importar TXT para tabela linha a linha Empty Re: [Resolvido]Importar TXT para tabela linha a linha

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/11/2024, 04:17