MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Erro de conversão de tipos - RecordSet

    Compartilhe
    avatar
    gabrielpn06
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 175
    Registrado : 17/01/2017

    [Resolvido]Erro de conversão de tipos - RecordSet

    Mensagem  gabrielpn06 em Qua 01 Ago 2018, 9:31 am

    Bom dia amigos,
    Tenho um código onde importo campos de uma tabela via RecordSet.
    O Código funciona bem, desde que em campos do tipo "moeda" o valor não seja "R$ - 0,00" ou "R$ - ".

    Teria alguma forma de eu usar o Format() assim como fiz no campo de datas? Se sim, como ficaria? Desde já agradeço!

    Segue o código:


    Código:
    Public Function ImportRetorno()
    On Error GoTo trataErro
       
     Dim dbLocal As DAO.Database
     Dim myRec As DAO.Recordset
     Dim dbExcel As DAO.Database
     Dim rsExcel As DAO.Recordset
     Dim rsTable As DAO.Recordset
     Dim Planilha As String
     Dim QtdRegistros As Long
     Dim coluna As String
     Dim QtdRegNaoCarregados As Long
     Dim strSQL As String
     Dim xlPath As String
     Dim ARQUIVO As Variant
     Dim Steps As Integer
     Dim CountSteps As Integer
     Dim intRecordCount As Integer
     Dim Celula As String
     Dim FileNameTextBoxTo As String
     Dim vVerifica As String
       
    Steps = 1
    CountSteps = 1
       
        Set myRec = CurrentDb.OpenRecordset("tb_ImpRetorno")
        Set dbLocal = CurrentDb
        dbLocal.Execute "DELETE * FROM tb_ImpRetorno"

        xlPath = CurrentProject.Path & "\Input\Retorno\"
        ARQUIVO = xlPath & "Pendências.xlsx"
        '"Pendências" &
        If (ARQUIVO = "") Then
            MsgBox "Não há arquivos para processar! Por favor, verifique se os arquivos estão no formato .XLSX. Interrompendo processamento.", vbExclamation, "Falha no processamento"
            Exit Function
        Else
        Forms!frm_Main!lblStatus = "Importação em andamento..."
       
       
            'declara o caminho e novo da base a ser importada
            Planilha = ARQUIVO
       
            Set dbExcel = OpenDatabase(Planilha, False, True, "Excel 8.0; HDR=no; IMEX=1;")
            Set rsExcel = dbExcel.OpenRecordset("Base Pendências$") 'define o nome da sheet da planilha
           
            'move para próxima linha, para pular o cabeçalho
            rsExcel.MoveNext

            'delara o valor dos contadores
            QtdRegistros = 0
            QtdRegNaoCarregados = 0
           
            Do While Not rsExcel.EOF                 
    1                myRec.AddNew
                        coluna = "Chave"
                        myRec.Fields("Chave") = Trim(rsExcel.Fields("F1")) & Format(Trim(rsExcel.Fields("F2")), "dd/mm/yyyy")
                       
                        coluna = "ID BASE"
                        myRec.Fields("ID BASE") = Trim(rsExcel.Fields("F1"))
                           
                        coluna = "DATA DE ENVIO"
                        myRec.Fields("DATA DE ENVIO") = Format(Trim(rsExcel.Fields("F2")), "dd/mm/yyyy")
       
                        coluna = "VALOR DA TARIFA"
                        myRec.Fields("VALOR DA TARIFA") = Trim(rsExcel.Fields("F9")) '<----- nesse da erro
                       
                       
                        coluna = "IR"
                        myRec.Fields("IR") = Trim(rsExcel.Fields("F10")) '<----- nesse da erro
                    myRec.Update
                   
                    QtdRegistros = QtdRegistros + 1
           
                    'Read records and process data
                    rsExcel.MoveNext
            Loop   
           
            'fecha o recordset do excel
            rsExcel.Close
            Set rsExcel = Nothing
            dbExcel.Close
            Set dbExcel = Nothing

            CountSteps = CountSteps + 1
        End If
       
        'fecha o recordset da tabela local
        dbLocal.Close
        Set dbLocal = Nothing

        'APAGA ARQUIVOS DAS PASTAS DE INPUT
        Do Until Dir(CurrentProject.Path & "\Input\Retorno\" & "*.xlsx") = ""
            VBA.Kill (CurrentProject.Path & "\Input\Retorno\" & "*.xlsx")
        Loop
                       
    Forms!frm_Main!lblStatus = "Importação das bases de envio concluída com sucesso!"
    Exit Function
       
    trataErro:

            Forms!frm_Main!lblStatus = "Ocorreu um erro na importação das bases de retorno!"
        If (Err.Number = 3022) Then
            QtdRegistros = QtdRegistros + 1
                rsExcel.MoveNext
        GoTo 1
        ElseIf (Err.Number = 3125) Then
            MsgBox "Nome da planilha é diferente de Sheet1. Favor corrigir e reimportar o arquivo.", vbExclamation
        ElseIf (Err.Number = 3421) Then
            MsgBox "Foi apresentado um erro de formatação na linha " & QtdRegistros & " da coluna " & coluna & "!", vbCritical
        ElseIf (Err.Number = 13) Then
            MsgBox "Foi apresentado um erro de formatação na linha " & QtdRegistros & " da coluna " & coluna & "!", vbCritical
        Else
            MsgBox Err.Number & " - " & Err.Description
        End If
    End Function


    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro de conversão de tipos - RecordSet

    Mensagem  Alexandre Neves em Qua 01 Ago 2018, 12:17 pm

    Boa tarde,

    Tente
    if left(rsExcel.Fields("F9"),5)="R$" then
    myRec.Fields("VALOR DA TARIFA") = mid(Trim(rsExcel.Fields("F9")),5)
    else
    myRec.Fields("VALOR DA TARIFA") = Trim(rsExcel.Fields("F9"))
    end if


    .................................................................................
    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
    gabrielpn06
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 175
    Registrado : 17/01/2017

    Re: [Resolvido]Erro de conversão de tipos - RecordSet

    Mensagem  gabrielpn06 em Sex 03 Ago 2018, 10:33 am

    Perfeito mestre! Obrigado!

      Data/hora atual: Qui 13 Dez 2018, 3:25 pm