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


4 participantes

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  Jitano 22/10/2012, 10:51

    Olá!

    Preciso de ajuda/orientação a importar dados de um ficheiro TXT divididos por "|" para tabela em ACCESS.

    Os dados no ficheiro TXT aparecem da seguinte forma:

    FRANCISCO AUGUSTO SOBRAL
    97743|JUNCAL|A|0.0.S|0,2208|0,2208|0,0000|0,0000
    97763|JUNCAL|B|0.0.S|0,5704|0,5704|0,0000|0,0000
    97764|JUNCAL|B|0.0.S|0,3168|0,3168|0,0000|0,0000
    97765|JUNCAL|B|0.0.S|1,2020|1,2020|0,0000|0,0000
    97766|JUNCAL|B|0.3.S|0,5266|0,0000|0,0000|0,0000
    97767|JUNCAL|B|0.3.S|0,6179|0,0000|0,0000|0,0000
    149587|JUNCAL|A|0.17.S|0,0267|0,0000|0,0000|0,0000
    98656|JUNCAL DE BAIXO|B|0.3.S|0,4261|0,0000|0,0000|0,0000
    159027|MURO DA URSULA|A|0.0.S|0,8507|0,8507|0,0000|0,0000
    97759|QUEBRADA|B|0.0.S|0,0786|0,0786|0,0000|0,0000
    97760|QUEBRADA|A|0.0.S|0,0708|0,0708|0,0000|0,0000
    97761|QUEBRADA|A|0.0.S|1,5728|1,5728|0,0000|0,3771
    97837|QUEBRADA|A|0.0.S|0,0245|0,0245|0,0000|0,0000
    97838|QUEBRADA|A|0.3.S|0,1122|0,0000|0,0000|0,0000
    JOSÉ ANJOS FERNANDES SILVA
    96138|OUTEIRO|A|0.0.S|0,0528|0,0528|0,0012|0,0000
    149357|OUTEIRO|A|0.17.S|0,0084|0,0000|0,0000|0,0000
    MANUEL ANTÓNIO HELENA
    97352|QUEBRADA|A|0.0.S|0,3458|0,3458|0,0014|0,0000
    97619|VALE ERVEDOSA OU TESTEMUNHAS|A|0.1.S|0,1099|0,1099|0,0000|0,0000
    97620|VALE ERVEDOSA OU TESTEMUNHAS|A|0.1.S|0,1841|0,1841|0,0000|0,0000
    MARIA MARGARIDA MACEDO PINTO
    96147|CARVALHEIRA OU CORDEIRA|A|0.0.S|0,3756|0,3756|0,0000|0,0000
    96148|CARVALHEIRA OU CORDEIRA|A|0.0.S|0,4720|0,4720|0,0000|0,0000
    160292|CORDEIRA|A|0.0.S|0,1286|0,1286|0,0000|0,0000
    160293|CORDEIRA|A|0.0.S|0,8981|0,8981|0,0000|0,0000
    160294|CORDEIRA|A|0.0.S|2,3772|2,3772|0,0000|0,0000
    96194|CORDEIRA OU CARVALHEIRA|A|0.0.S|1,0924|1,0924|0,0000|0,0000
    155959|CORDEIRA OU CARVALHEIRA|A|0.0.S|0,7412|0,7412|0,0000|0,0000
    155960|CORDEIRA OU CARVALHEIRA|A|0.0.S|0,7128|0,7128|0,0036|0,1541
    155961|CORDEIRA OU CARVALHEIRA|A|0.1.S|0,1785|0,1785|0,0000|0,0000
    155962|CORDEIRA OU CARVALHEIRA|A|0.1.S|0,1750|0,1750|0,0000|0,1409
    159304|MOGADOURO|A|0.0.S|0,6822|0,6822|0,0000|0,0000
    96098|OUTEIRO|A|0.0.S|0,7861|0,7861|0,0000|0,0000
    96099|OUTEIRO|A|0.3.S|0,3686|0,0000|0,0000|0,0000
    149353|OUTEIRO|A|0.17.S|0,0080|0,0000|0,0000|0,0000
    96095|SAPA|A|0.0.S|0,1512|0,1512|0,0000|0,0000
    96096|SAPA|A|0.3.S|0,5554|0,0000|0,0000|0,0000
    137177|SAPA|A|0.0.S|1,1446|1,1446|0,0000|0,0000
    137178|SAPA|A|0.6.S|0,0000|1,0078|0,0000|0,0000
    149352|SAPA|A|0.17.S|0,2219|0,0000|0,0000|0,0000
    ANTÓNIO ADOLFO PINTO BALDAIA
    98405|ALAMOS|B|0.0.S|0,0695|0,0695|0,0056|0,0000
    98406|ALAMOS|C|0.0.S|0,1750|0,1750|0,0000|0,0000
    98407|ALAMOS|B|0.0.S|1,8851|1,8851|0,0000|0,3022
    JOSÉ ANTÓNIO MONTEIRO CORDEIRO
    102154|CHAO DA PEREIRA|A|0.0.S|0,1534|0,1534|0,0030|0,0000
    JORGE MANUEL DUARTE
    102401|MERUGE|A|0.0.S|1,0069|1,0069|0,0000|0,0000
    102443|MERUGE|A|0.2.S|4,0655|4,0655|0,0000|0,0000

    Ou seja aparece o NOME e depois a seguir ao nome aparecem os vários registos que pertencem a esse NOME.

    Pegando no último nome que aparece:

    JORGE MANUEL DUARTE
    102401|MERUGE|A|0.0.S|1,0069|1,0069|0,0000|0,0000
    102443|MERUGE|A|0.2.S|4,0655|4,0655|0,0000|0,0000

    Eu preciso de um código que me importe para tabela da seguinte forma:

    JORGE MANUEL DUARTE|102401|MERUGE|A|0.0.S|1,0069|1,0069|0,0000|0,0000
    JORGE MANUEL DUARTE|102443|MERUGE|A|0.2.S|4,0655|4,0655|0,0000|0,0000

    Eu já tenho um código que utilizava para importar dados de um ficheiro TXT para tabela ACCESS por posição... mas agora preciso de um código que importe através da barra "|".


    Código:
    Do While Len(file_name) > 0
       
        Open dir_path & file_name For Input As #1
     
        Set rs = db.OpenRecordset("T_Teste", dbOpenTable)
       
        Do While Not EOF(1)
        Line Input #1, Linha
       
                    If ??? Then
                        nome = ???
                    End If
               
                If Len(Linha) > 0 And Len(Linha) < 200 Then
                         
                    rs.AddNew
                    rs("nome") = nome
                    rs("numero") = ???
                    rs("designacao") = ???
                    rs("cl") = ???
                    rs("situacao") = ???
                    rs("area_apta") = ???
                    rs("area_apta_a_mg") = ???
                    rs("area_nao_apta") = ???
                    rs("sem_eq_legal") = ???
                    rs.Update
               
                End If
           
            Loop
     
    Close #1
     
    file_name = Dir$()
    Loop

    O que eu preciso é ajuda a importar texto dividido por "|", porque acho que com este código que tenho adicionando a condição para importar até encontrar "|" consigo fazer o que pretendo.

    Obrigado em avanço
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  Avelino Sampaio 22/10/2012, 11:27

    Olá

    Estude no help do VBA sobre a função Split().

    neste meu artigo tem uma pequena explicação sobre o seu uso.

    http://www.usandoaccess.com.br/tutoriais/tuto49.asp?id=1#inicio

    Algo como

    dim campo as variant
    campo = split(Linha,"|")

    campo(0) ' valor da posição zero
    campo(1) ' valor da posição 1
    campo(n) ' valor da posição n

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  JPaulo 22/10/2012, 11:33

    Não excluíndo o que o Grande Avelino lhe passou, também pode e deve utilizar a busca do fórum, tem muita coisa por aqui mesmo;

    http://maximoaccess.forumeiros.com/t7541-resolvidoimportar-dados-do-ficheiro-txt



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Folder_announce_new Instruções SQL como utilizar...
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  Jitano 24/10/2012, 11:09

    Avelino & JPaulo, obrigado... mas ainda não consegui chegar lá.

    Código:
    Private Sub ImportarIVDP_Click()
     
    Dim Campo As Variant
    Dim Linha As String
    Dim db As Database
    Dim rs As DAO.Recordset
    Dim Matriz() As String
     
    Dim stDocName As String
     
    'Abre o banco de dados
    Set db = CurrentDb
     
    dir_path = "MyDocuments\Access\IVDP\Mapas\"
    file_name = Dir$(dir_path)
     
    db.Execute "DROP TABLE T_IVDP"
     
    db.Execute "CREATE TABLE T_IVDP ([Nome] TEXT, [Numero] NUMBER, [Parcela] TEXT, " _
    & "[Classificacao] TEXT, [Situacao] TEXT, [Area_Apta] NUMBER, [Area_Apta_a_MG] NUMBER," _
    & "[Area_Nao_Apta] NUMBER, [Sem_Enq_Legal] NUMBER)"
     
    Do While Len(file_name) > 0
       
        'Abre o ficheiro mapa a ser importado
        Open dir_path & file_name For Input As #1
     
        Set rs = db.OpenRecordset("T_IVDP", dbOpenTable)
       
        Do While Not EOF(1)
        Line Input #1, Linha
       
                If Left(Linha, 1) <> Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9") Then
                    Nome = Left(Linha, 100)
                End If
                   
                If Left(Linha, 1) = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9") Then
               
                Campo = Split(Linha, "|")
                         
                    rs.AddNew
                    rs("Nome") = Nome
                    rs("Numero") = Campo(0)
                    rs("Parcela") = Campo(1)
                    rs("Classificacao") = Campo(2)
                    rs("Situacao") = Campo(3)
                    rs("Area_Apta") = Campo(4)
                    rs("Area_Apta_a_MG") = Campo(5)
                    rs("Area_Nao_Apta") = Campo(6)
                    rs("Sem_Enq_Legal") = Campo(7)
                    rs.Update
               
                End If
           
            Loop
     
    Close #1
     
    file_name = Dir$()
    Loop
     
    MsgBox "Dados importados com sucesso!", vbInformation, "IVDP"
     
    rs.Close
    db.Close
     

    End Sub

    No
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  Jitano 25/10/2012, 09:36

    Alguém me pode dar uma ajuda para conseguir importar os dados?

    Obrigado
    avatar
    rclenzi
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  rclenzi 25/10/2012, 14:17

    Segue o código arrumado

    Código:

        Dim Nome As String
        Dim Campo As Variant
        Dim Linha As String
        Dim db As Database
        Dim rs As DAO.Recordset
        Dim Matriz() As String
       
        Dim dir_path As String
        Dim file_name As String
       
        Dim stDocName As String
       
        'Abre o banco de dados
        Set db = CurrentDb
       
        dir_path = "MyDocuments\Access\IVDP\Mapas\"
        file_name = Dir$(dir_path)
       
        db.Execute "DROP TABLE T_IVDP"
       
        db.Execute "CREATE TABLE T_IVDP ([Nome] TEXT, [Numero] NUMBER, [Parcela] TEXT, " _
        & "[Classificacao] TEXT, [Situacao] TEXT, [Area_Apta] NUMBER, [Area_Apta_a_MG] NUMBER," _
        & "[Area_Nao_Apta] NUMBER, [Sem_Enq_Legal] NUMBER)"
       
        While Len(file_name) > 0
            Set rs = db.OpenRecordset("T_IVDP", dbOpenTable)
           
            'Abre o ficheiro mapa a ser importado
            Open dir_path & file_name For Input As #1
                While Not EOF(1)
                    Line Input #1, Linha
                   
                    If InStr(Linha, "|") = 0 Then
                        Nome = Left(Linha, 100)
                    Else
                        Campo = Split(Linha, "|")
                       
                        rs.AddNew
                        rs("Nome") = Nome
                        rs("Numero") = Campo(0)
                        rs("Parcela") = Campo(1)
                        rs("Classificacao") = Campo(2)
                        rs("Situacao") = Campo(3)
                        rs("Area_Apta") = Campo(4)
                        rs("Area_Apta_a_MG") = Campo(5)
                        rs("Area_Nao_Apta") = Campo(6)
                        rs("Sem_Enq_Legal") = Campo(7)
                        rs.Update
                    End If
                Wend
            Close #1
       
            file_name = Dir$()
        Wend
       
        MsgBox "Dados importados com sucesso!", vbInformation, "IVDP"
       
        rs.Close
        db.Close
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  Jitano 25/10/2012, 17:30

    THANKS rclenzi!!

    bounce

    Conteúdo patrocinado


    [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS Empty Re: [Resolvido]Dúvida a importar dados em TXT divididos por "|" para tabela em ACCESS

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 17:29