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 valor de uma linha txt contendo virgula

    asimoes
    asimoes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    [Resolvido]Importar valor de uma linha txt contendo virgula Empty [Resolvido]Importar valor de uma linha txt contendo virgula

    Mensagem  asimoes 13/3/2015, 13:58

    Ola pessoal!

    É o seguinte, estou importando um aquivo txt para o Access, está tudo ok, porem nas linhas que contem virgula, o vba entende como delimitador e quebra a linha.

    Ex:
    Linha do Txt, (Exatamente com está no txt)
    30089      4 TURISMO      19/01/15 04/02/15   82027      5 APACHE VIP IV             Em Liberação                   1,534

    Reparem que o valor no fim da linha "1,534" contem uma virgula e estou colocando esse valor em uma variável com o comando abaixo

    strPesoPadraoTxt = Mid(strLinha, 108, 14)

    o resultando de strPesoPadraoTxt é "1" e não "1,534"

    Eu sei que ocorre é uma quebra na linha por o VBA estar entendendo a virgula como delimitador pegando apenas o "1" e jogando o valor "534" na próxima linha. Mas como faço para o VBA entender que nesse caso quero q ele ñ reconheça a virgula como delimitados e sim como um texto norma?

    Obrigado!


    Em anexo segue txt e abaixo o código:


    Código:
    Public Sub LimpaTxtESPD0083()

    '-------------------------------DEFINIÇÃO DA FUNÇÃO-----------------------------------'
    ' Importa e Limpa Txt Gerado pela tela ESPD0083                                       '
    '-------------------------------------------------------------------------------------'
      
       Dim strEncTxt As String
       Dim strUnidTxt As String
       Dim intUnidTxt As Integer
       Dim strClienteTxt As String
       Dim strEntLinhaTxt As String
       Dim strPrevLiberTxt As String
       Dim strNeTxt As String
       Dim strAtrasoTxt As String
       Dim strCarroceriaTxt As String
       Dim strPosicaoTxt As String
       Dim strPesoPadraoTxt As String

       Dim strCaminho As String
       Dim dtDataGerado As Date
       Dim strLinha As String


       strCaminho = [Form_Importa Txt].TxtESPD0083 'O caminho do txt é recebido de um textbox
       dtDataGerado = Date
        
      
    ' ---> Abre banco atual e arquivo txt para entrada
       Open strCaminho For Input As #1

    ' ---> Importa txt ESPD0083
       Do While Not EOF(1)
      
          Input #1, strLinha

    '---> Pega valor na variável e retira espaços antes e depois
          strEncTxt = Mid(strLinha, 1, 6)
          strEncTxt = Trim(strEncTxt)
          
          strUnidTxt = Mid(strLinha, 7, 6)
          strUnidTxt = Trim(strUnidTxt)
          
          strClienteTxt = Mid(strLinha, 14, 13)
          strClienteTxt = Trim(strClienteTxt)
          
          strEntLinhaTxt = Mid(strLinha, 27,
          strEntLinhaTxt = Trim(strEntLinhaTxt)
          
          strPrevLiberTxt = Mid(strLinha, 36,
          strPrevLiberTxt = Trim(strPrevLiberTxt)
                
          strNeTxt = Mid(strLinha, 45, 7)
          strNeTxt = Trim(strNeTxt)
          
          strAtrasoTxt = Mid(strLinha, 53, 6)
          strAtrasoTxt = Trim(strAtrasoTxt)
          
          strCarroceriaTxt = Mid(strLinha, 60, 25)
          strCarroceriaTxt = Trim(strCarroceriaTxt)
          
          strPosicaoTxt = Mid(strLinha, 86, 21)
          strPosicaoTxt = Trim(strPosicaoTxt)
          
          strPesoPadraoTxt = Mid(strLinha, 108, 14)
          strPesoPadraoTxt = Trim(strPesoPadraoTxt)
                    
    '---> Descarta linhas desnecessarias e insere na tabela as linhas validas
          If IsNumeric(strEncTxt) Then
             CurrentDb.Execute "INSERT INTO ImportaESPD0083 (ENC, Und, Cliente, EntLinha, PrevLiber, Ne, Atraso, Carroceria, Posicao, PesoPadrao, DataRelatorio)" _
             & " VALUES ('" & strEncTxt & "', '" & strUnidTxt & "', '" & strClienteTxt & "', '" & strEntLinhaTxt & "', '" & strPrevLiberTxt & "', '" & strNeTxt & "'," _
             & " '" & strAtrasoTxt & "', '" & strCarroceriaTxt & "', '" & strPosicaoTxt & "', '" & strPesoPadraoTxt & "', '" & dtDataGerado & "')"
          End If
       Loop
      
    '---> Finaliza
       Close #1
       strCaminho = ""
      
    End Sub
    Anexos
    [Resolvido]Importar valor de uma linha txt contendo virgula AttachmentESPD0083.txt
    Você não tem permissão para fazer download dos arquivos anexados.
    (6 Kb) Baixado 18 vez(es)


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    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]Importar valor de uma linha txt contendo virgula Empty Re: [Resolvido]Importar valor de uma linha txt contendo virgula

    Mensagem  Avelino Sampaio 13/3/2015, 15:20

    Olá!

    Fiz um teste aqui é esta capturando direitinho. Vc tem que substituir a vírgula pelo ponto se não dá zebra na sintaxe da SQL

    Experimente

    strPesoPadraoTxt = replace(mid(strlinha,108),",",".")

    Aguardamos




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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    [Resolvido]Importar valor de uma linha txt contendo virgula Empty Re: [Resolvido]Importar valor de uma linha txt contendo virgula

    Mensagem  asimoes 13/3/2015, 17:17

    Então Avelino!
    O problema é que a primeira variável que recebe a linha do txt strLinha já vem faltando os valores após a virgula! e a partir do valor dessa variável é que o Mid quebra em outras variareis!

    não sei se deixei claro, mas conforme o código que passei, a variável strLinha deveria receber o valor abaixo;
    30089      4 TURISMO      19/01/15 04/02/15   82027      5 APACHE VIP IV             Em Liberação                   1,534

    o que está em vermelho deve vir junto! é o que não está ocorrendo, e a partir daí eu conseguiria utilizar o Replace para alterar a "," por "."


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    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]Importar valor de uma linha txt contendo virgula Empty Re: [Resolvido]Importar valor de uma linha txt contendo virgula

    Mensagem  Avelino Sampaio 13/3/2015, 18:21

    Veja o teste que fiz usando a janela imediata:

    [Resolvido]Importar valor de uma linha txt contendo virgula Asimoes


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    [Resolvido]Importar valor de uma linha txt contendo virgula Empty Re: [Resolvido]Importar valor de uma linha txt contendo virgula

    Mensagem  asimoes 13/3/2015, 19:17

    Poxa! vendo seu exemplo percebi onde estava o erro!

    No seu exemplo você utilizou o Line antes do Input fincando assim: Line Input #1 e no meu código não tinha utilizado o Line, então o VBA entende a virgula como delimitador e quebra a linha. Faz um teste executando esse exemplo do print sem o Line antes do Input! que verá!

    Mais caso resolvido!


    Muito obrigado Avelino!


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

    Conteúdo patrocinado


    [Resolvido]Importar valor de uma linha txt contendo virgula Empty Re: [Resolvido]Importar valor de uma linha txt contendo virgula

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:40