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]Extrair dados XML

    avatar
    ictsp
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 02/09/2016

    [Resolvido]Extrair dados XML Empty [Resolvido]Extrair dados XML

    Mensagem  ictsp 16/1/2019, 14:23

    Prezados colegas!

    Tenho uma pasta onde salvo arquivos xml. Meu objetivo é criar um formulario que liste o nome desses arquivos e extraia algumas informações também. Cheguei perto do que pretendo, porém usando um único arquivo e exibindo os valores através de msgbox.

    O código que estou utilizando obtive através dos posts dos amigos Avelino Sampaio e anteixeira
    Código:
    Option Compare Database
    Dim meuFicheiro As String, textoXml As String, textoLinha As String

    Private Sub Form_Load()
    Dim strArquivo As String
    Dim strCaminho As String
    CurrentDb.Execute "DELETE FROM XML;"
    strCaminho = "C:\BRADESCO\"
    strArquivo = Dir$(strCaminho & "*.xml")
    Do While Len(strArquivo) > 0
        CurrentDb.Execute "INSERT INTO XML (XML) VALUES('" & strArquivo & "');"
        strArquivo = Dir$()
        Form.SUBXML.Requery
        Loop
      meuFicheiro = Application.CurrentProject.Path & "\ALPINA-15797.xml"
            
        Open meuFicheiro For Input As #1
            Do Until EOF(1)
                Line Input #1, textoLinha
                 textoXml = textoXml & textoLinha
            Loop
        Close #1

    'MsgBox textoXml, vbInformation, "Conteodo do Xml"
    MsgBox "Campo nNF:   " & separaEntreDuasStringsXML(textoXml, "<nNF>", "</nNF>") 'exibir em coluna
    MsgBox "Campo xNome:   " & separaEntreDuasStringsXML(textoXml, "<xNome>", "</xNome>") 'exibir em coluna
    MsgBox "Campo data:   " & separaEntreDuasStringsXML(textoXml, "<dhEmi>", "</dhEmi>") 'exibir em coluna

    End Sub
    '2014 Alvaro Teixeira
    Function separaEntreDuasStringsXML(strTotal As String, strInicio As String, strFim As String)
    Dim i As Long, j As Long
        i = InStr(strTotal, strInicio)
        j = InStr(strTotal, strFim)
        separaEntreDuasStringsXML = Mid(strTotal, i + Len(strInicio), j - i - Len(strInicio))
    End Function

    Gostaria de exibir os dados dessa forma:
    [Resolvido]Extrair dados XML Bd10

    Desde já, agradeço a ajuda dos colegas!!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Extrair dados XML Empty Re: [Resolvido]Extrair dados XML

    Mensagem  Alvaro Teixeira 16/1/2019, 14:46

    Olá Isaque Toledo,

    Poste uma base de dados com os objetos envolvidos na questão e dois ficheiros XML (com dados de amostragem) para se testar.

    Assim fica mais fácil para ajudar.

    Abraço

    avatar
    ictsp
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 02/09/2016

    [Resolvido]Extrair dados XML Empty Extrair dados xml

    Mensagem  ictsp 16/1/2019, 15:31

    Prezado anteixeira,segue os arquivos.
    Anexos
    [Resolvido]Extrair dados XML Attachmentlocal.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (54 Kb) Baixado 18 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Extrair dados XML Empty Re: [Resolvido]Extrair dados XML

    Mensagem  Alvaro Teixeira 16/1/2019, 16:58

    Olá Isaque Toledo,

    Acho que é o que pretende, veja código utilizado comentado:
    Código:
    Option Compare Database

    Private Sub cmdProcessar_Click()
    'ahteixeira 2019 Maximoaccess
    'http://www.maximoaccess.com/t35093-extrair-dados-xml

    Dim meuFicheiro As String, textoXml As String, textoLinha As String
    Dim strArquivo As String, strCaminho As String
    Dim tmp_nNF As String, tmp_xNome As String, tmp_dhEmi As String

    'apaga dados da tabela XML
    CurrentDb.Execute "DELETE FROM XML;"

    'definir caminho e extensão do tipo de ficheiro a pesquisar
    strCaminho = "C:\local\"
    strArquivo = Dir$(strCaminho & "*.xml")

        'faz enquanto existe arquivo *.XML
        Do While Len(strArquivo) > 0
            
            'junta o caminho ao nome do arquivo
            meuFicheiro = strCaminho & strArquivo
            textoXml = ""
        
            Open meuFicheiro For Input As #1 'abre ficheiro para leitura
                Do Until EOF(1) 'ler ficheiro até ao fim linha a linha
                    Line Input #1, textoLinha
                     textoXml = textoXml & textoLinha
                Loop
                'atribuir às variaveis temporarias os campos do XML
                tmp_nNF = separaEntreDuasStringsXML(textoXml, "<nNF>", "</nNF>")
                tmp_xNome = separaEntreDuasStringsXML(textoXml, "<xNome>", "</xNome>")
                tmp_dhEmi = separaEntreDuasStringsXML(textoXml, "<dhEmi>", "</dhEmi>")
            Close #1 'fechar ficheiro
        
        
            'consulta acrescentar
            CurrentDb.Execute "INSERT INTO XML (XML, xNome, nNF, dhEmi) VALUES('" & strArquivo & "', '" & tmp_xNome & "', '" & tmp_nNF & "', '" & tmp_dhEmi & "');"
            strArquivo = Dir$()
            Form.SUBXML.Requery
        Loop

    End Sub

    '2014 Alvaro Teixeira
    Function separaEntreDuasStringsXML(strTotal As String, strInicio As String, strFim As String)
    Dim i As Long, j As Long
        i = InStr(strTotal, strInicio)
        j = InStr(strTotal, strFim)
        separaEntreDuasStringsXML = Mid(strTotal, i + Len(strInicio), j - i - Len(strInicio))
    End Function
    Segue o meu teste:
    cld.pt/dl/download/2eecb899-bd7c-498d-93ab-8b1a280cb715/BDXML_rev.zip

    Abraço
    avatar
    ictsp
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 02/09/2016

    [Resolvido]Extrair dados XML Empty Re: [Resolvido]Extrair dados XML

    Mensagem  ictsp 16/1/2019, 17:26

    Prezado anteixeira!

    Agradeço imensamente por sua ajuda. Ficou perfeito.

    Muitissimo obrigado!!

    Abraço.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Extrair dados XML Empty Re: [Resolvido]Extrair dados XML

    Mensagem  Alvaro Teixeira 16/1/2019, 17:39

    Olá Isaque Toledo,

    Fico feliz por ter ajudado!
    Obrigado pelo retorno, o fórum agradece.

    Abraço

    Conteúdo patrocinado


    [Resolvido]Extrair dados XML Empty Re: [Resolvido]Extrair dados XML

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/9/2024, 01:43