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 de arquivo XML (Problema com a vírgula)

    avatar
    Convidado
    Convidado


    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Convidado 1/5/2014, 21:57

    Estou utilizando o seguinte código para importar os dados de um arquivo XML, ocorre que na parte do texto onde tem a vírgula.. desta em diante não importa.

    Código:
    '-------------------
    'Abre o arquivo  xml
    '-------------------
    Open Arquivo For Input As #1
        Do While Not EOF(1)
        nLinha = nLinha + 1
        Input #1, strLinha


    Imagem:

    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Z

    Importa apenas até  o número 2  antes da vírgula no texto : Fita Micropore2,5 p/cm (3M BRASIL)\
    O que fazer amigos?

    Grato pela ajuda.

    Cumprimentos.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Alexandre Neves 2/5/2014, 09:51

    Bom dia, amigo
    Coloca Input 1, strLinha


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Convidado
    Convidado


    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Convidado 2/5/2014, 15:29

    Deu Erro amigão.. Era esperado:#

    Cumprimentos.
    avatar
    erinaldo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 27/09/2010

    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  erinaldo 2/5/2014, 16:42

    ver se isto ajuda

    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 (>)
    Rotulo = Sec(0) 'pega a primeira parte da seção
    avatar
    Convidado
    Convidado


    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Convidado 2/5/2014, 17:20

    Opa Erinaldo... Eu estava conseguindo com o Line porém os espaços estavam sendo um problema...
    Com sua dica quanto ao VbTab Ficou perfeito!!!!!

    Obrigado a todos pela Ajuda

    Código completo

    Function ImportaXML(Arquivo As String)
    '-----------------------
    'Declaração de Variáveis
    '-----------------------
    Dim strLinha As String
    Dim strLInha1
    Dim nLinha As Integer
    Dim StrArquivo As String
    Dim StrNumCarteira As String
    Dim StrNomeBen As String
    Dim StrSenhaAut As String
    Dim dtDataHoraInt
    Dim dtDataHoraSai
    Dim lngCodigo As Long
    Dim StrDescricao As String
    Dim dblQtdRealiza As Double
    Dim dblReferencia As Double
    Dim dblValorTotal As Double
    Dim strTMP, strTMP1

    '-------------------
    'Abre o arquivo xml
    '-------------------
    Open Arquivo For Input As #1

    Do While Not EOF(1)
    Line Input #1, strLinha
    strLinha = LTrim(Replace(strLinha, vbTab, " ")) 'substitui as tabulações por espaços e corta os espaços

    If Mid(left(strLinha, 23), 2, Len(left(strLinha, 23))) = "ansTISS:numeroCarteira" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    StrNumCarteira = Mid(strLinha, 25, InStrRev(strLinha, "<") - 25)
    ElseIf Mid(left(strLinha, 25), 2, Len(left(strLinha, 25))) = "ansTISS:nomeBeneficiario" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    StrNomeBen = Mid(strLinha, 27, InStrRev(strLinha, "<") - 27)
    ElseIf Mid(left(strLinha, 25), 2, Len(left(strLinha, 25))) = "ansTISS:senhaAutorizacao" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    StrSenhaAut = Mid(strLinha, 27, InStrRev(strLinha, "<") - 27)
    ElseIf Mid(left(strLinha, 27), 2, Len(left(strLinha, 27))) = "ansTISS:dataHoraInternacao" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    dtDataHoraInt = CDate(Format(Mid(strLinha, 29, InStrRev(strLinha, "<") - 38), "mm/dd/yyyy"))
    ElseIf Mid(left(strLinha, 28), 2, Len(left(strLinha, 27))) = "ansTISS:dataHoraAtendimento" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    dtDataHoraInt = Mid(strLinha, 30, InStrRev(strLinha, "<") - 39)
    ElseIf Mid(left(strLinha, 32), 2, Len(left(strLinha, 31))) = "ansTISS:dataHoraSaidaInternacao" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    dtDataHoraSai = CDate(Format(Mid(strLinha, 34, InStrRev(strLinha, "<") - 43), "mm/dd/yyyy"))
    ElseIf Mid(left(strLinha, 16), 2, Len(left(strLinha, 16))) = "ansTISS:codigo>" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    lngCodigo = Mid(strLinha, 17, InStrRev(strLinha, "<") - 17)
    ElseIf Mid(left(strLinha, 19), 2, Len(left(strLinha, 19))) = "ansTISS:descricao>" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    'strTMP = Mid(strLinha, Len(strLinha) - 19)
    strTMP1 = left(strLinha, (Len(strLinha) - Len(strTMP)))
    If right(strLinha, 20) = "" Then
    StrDescricao = Mid(strTMP1, 20, (Len(strTMP1)))
    Else
    StrDescricao = Mid(strLinha, 20, (Len(strLinha)))
    End If
    ElseIf Mid(left(strLinha, 28), 2, Len(left(strLinha, 28))) = "ansTISS:quantidadeRealizada" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    strTMP1 = left(strLinha, (Len(strLinha) - Len(strTMP)))
    If Len("" & strTMP1) = 0 Then
    dblQtdRealiza = 0
    Else
    dblQtdRealiza = Replace(Nz(Mid(strTMP1, 30, (Len(strTMP1))), 0), ".", ",")
    End If
    ElseIf Mid(left(strLinha, 19), 2, Len(left(strLinha, 19))) = "ansTISS:quantidade" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    strTMP1 = left(strLinha, (Len(strLinha) - Len(strTMP)))
    If Len("" & strTMP1) = 0 Then
    dblQtdRealiza = 0
    Else
    dblQtdRealiza = Replace(Nz(Mid(strTMP1, 21, (Len(strTMP1))), 0), ".", ",")
    End If
    ElseIf Mid(left(strLinha, 15), 2, Len(left(strLinha, 15))) = "ansTISS:valor>" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    strTMP1 = left(strLinha, (Len(strLinha) - Len(strTMP)))
    If Len("" & strTMP1) = 0 Then
    dblReferencia = 0
    Else
    dblReferencia = Replace(Nz(Mid(strTMP1, 16, (Len(strTMP1))), 0), ".", ",")
    End If
    ElseIf Mid(left(strLinha, 23), 2, Len(left(strLinha, 23))) = "ansTISS:valorUnitario>" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    strTMP1 = left(strLinha, (Len(strLinha) - Len(strTMP)))
    If Len("" & strTMP1) = 0 Then
    dblReferencia = 0
    Else
    dblReferencia = Replace(Nz(Mid(strTMP1, 24, (Len(strTMP1))), 0), ".", ",")
    End If
    ElseIf Mid(left(strLinha, 19), 2, Len(left(strLinha, 19))) = "ansTISS:valorTotal" Then
    strTMP = Mid(strLinha, InStrRev(strLinha, "<"))
    strTMP1 = left(strLinha, (Len(strLinha) - Len(strTMP)))
    If Len("" & strTMP1) = 0 Then
    dblValorTotal = 0
    Else
    dblValorTotal = Replace(Nz(Mid(strTMP1, 21, (Len(strTMP1))), 0), ".", ",")
    End If
    '---------------------------
    'Insere os valores na tabela
    '---------------------------
    '------------------------------------------------------
    'Se a descrição não é nula e a dtDataHoraSai não é nula
    '------------------------------------------------------
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Enviado")

    If Len("" & StrDescricao) > 0 And Len("" & dtDataHoraSai) > 0 Then
    rs.AddNew
    rs!NomeUsuário = StrNomeBen
    rs!CódUsuário = StrNumCarteira
    rs!CódGuia = StrSenhaAut
    rs!CódServiço = lngCodigo
    rs!DtAtendimento = dtDataHoraInt
    rs!DtAlta = dtDataHoraSai
    rs!NomeServiço = StrDescricao
    rs!QuantidadeServiço = dblQtdRealiza
    rs!Referencia = dblReferencia
    rs!ValorPago = dblValorTotal
    rs.Update
    '--------------------------------------------------
    'Se a descrição não é nula e a dtDataHoraSai é nula
    '--------------------------------------------------
    ElseIf Len("" & StrDescricao) > 0 And Len("" & dtDataHoraSai) = 0 Then
    rs.AddNew
    rs!NomeUsuário = StrNomeBen
    rs!CódUsuário = StrNumCarteira
    rs!CódGuia = StrSenhaAut
    rs!CódServiço = lngCodigo
    rs!DtAtendimento = CDate(dtDataHoraInt)
    rs!NomeServiço = StrDescricao
    rs!QuantidadeServiço = dblQtdRealiza
    rs!Referencia = dblReferencia
    rs!ValorPago = dblValorTotal
    rs.Update
    End If
    StrDescricao = Empty
    dblQtdRealiza = Empty
    dblReferencia = Empty
    dblValorTotal = Empty
    strTMP = Empty
    strTMP1 = Empty
    End If
    Loop
    '------------------------------------
    'Aplica na variável o nome do arquivo
    '------------------------------------
    StrArquivo = Mid(Arquivo, InStrRev(Arquivo, "\") + 1)
    '---------------------------------------------------------------------------------
    'Aplica na variável o nome do caminho que será gravado o arquivo + o nome do mesmo
    '---------------------------------------------------------------------------------
    novocaminho = CurrentProject.Path & "\ArquivosImportados\" & StrArquivo
    '--------------------------
    'Executa a cópia do arquivo
    '--------------------------
    FileCopy Arquivo, novocaminho
    '---------------
    'Fecha o arquivo
    '---------------
    Close #1
    '--------------------------
    'Deleta o arquivo de origem
    '--------------------------
    ' Kill Arquivo
    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Alexandre Neves 2/5/2014, 20:03

    Olá amigo Hary
    Ainda bem que resolvestes, mas orientei-me pela ajuda da Microsoft (http://office.microsoft.com/pt-br/access-help/funcao-input-HA001228855.aspx)
    Abraços,


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Convidado
    Convidado


    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Convidado 3/5/2014, 00:05

    Opa Grande Mestre... São funções diferentes Input e input#... Eu havia tentado porém a função input retorna a quantidade de letras na variável de acordo com a quantidade especificada (em vermelho)

    MyChar = Input(1, #1)

    O problema estava na falta da instrução Line, ocorre que quando aplica o comando Line na expressão ele retorna a linha completa + tabulações..
    O que foi resolvido com a dica do colega Erinaldo.

    Valeu pela Ajuda!

    Abraços.
    avatar
    erinaldo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 27/09/2010

    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  erinaldo 4/5/2014, 18:04

    Resolvido!!! pode fechar o topico!!
    avatar
    Convidado
    Convidado


    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Convidado 4/5/2014, 18:31

    Já está fechado Amigão.
    Obrigado.

    Conteúdo patrocinado


    [Resolvido]Importar de arquivo XML (Problema com a vírgula) Empty Re: [Resolvido]Importar de arquivo XML (Problema com a vírgula)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 16:32