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


    Duvida Importação de dados tabela excel para tabela access

    alozs
    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 07/02/2018

    Duvida Importação de dados tabela excel para tabela access Empty Duvida Importação de dados tabela excel para tabela access

    Mensagem  alozs em 26/3/2019, 16:32

    Olá a todos, venho solicitar ajuda em um outro projeto que estou fazendo, eu utilizei o código de importação que um amigo do forum postou e está funcionando tudo perfeitamente porem minha dúvida é como tratar de possíveis erros na hora que o cliente preencher a planilha a ser passada para o sistema, o modelo é o seguinte, tenho uma tabela de cadastro de produtos no access, porem para o cliente não precisar digitar tudo manualmente o cadastro dos produtos, ele vai preencher uma planilha ou copiar as informações para dentro dessa planilha de produtos de outro sistema e vai importar para dentro do meu sistema, porem preciso que sejam tratados alguns erros para se adequar ao meu sistema e não importar com erros como por exemplo se o código do produto que estiver na planilha for acima de 13 dígitos ou no campo preço estiver uma letra ou algo nesse sentido, precisaria tratar esses erros e se possível exibir uma lista com os produtos que não foram importados por algum motivo ou uma tabela temporária ou até mesmo se puder tratar esses dados no próprio excel (tipo apagar todos que deram certo e manter os que estão com algum erro), outro detalhe é preciso também preencher uma outra tabela (contendo as informações de estoque) desses produtos  pale
    o código que estou utilizando é esse abaixo

    Código:
    Option Compare Database
    Private Sub Comando0_Click()
    'On Error Resume Next
    '------------------------------------------------------------------'
    '              Adaptado do site UsandoAccess.com                   '
    '                 Por FabioPaes em 24/01/2017                      '
    '------------------------------------------------------------------'
    Dim strTabela As String
    Dim strSQL As String
    Dim bdExcel As DAO.Database
    Dim rs, rs1 As DAO.Recordset
    'Passa o local e nome do arquivo para a variável
    strArquivo = CurrentProject.Path & "\Exemplo.xlsx"
    'Abre arquivo ListaClientes.xls
    Set bdExcel = OpenDatabase(strArquivo, False, False, "Excel 12.0;HDR=Yes;IMEX=0;")
    'Monta a consulta do Recordset
    strSQL = "SELECT * FROM [Planilha1$]"
    'Abre o Recordset da consulta
    Set rs = bdExcel.OpenRecordset(strSQL)
    'Abre o recordset na tabela que recebera os dados
    Set rs1 = CurrentDb.OpenRecordset("Tb_Produtos")
    'Adiciona os dados a tabela tb1
    Do While Not rs.EOF
    rs1.AddNew
        'verifico antes sem tem dados na primeira coluna, se tiver eu lanço, se nao eu ignoro!
        If Nz(Len(rs(0)), 0) > 0 Then
        
        rs1!CódigoDoProduto = rs(0) '0 é a primeira coluna do Excel
        rs1!Descricao = rs(1)
        rs1!unid = rs(2)
        rs1!Preco = rs(3)
        rs1!OBS = rs(4)
    rs1.Update
        End If
    rs.MoveNext
    Loop

    'fecha o Recordset
    rs.Close
    Set rs = Nothing
    rs1.Close
    Set rs1 = Nothing
    'Fecha o arquivo Excel
    bdExcel.Close
    Set bdExcel = Nothing
    MsgBox "A Tabela foi Atualizada...", vbInformation, "Aviso"

    End Sub

    o bd e a planilha modelo está em anexo (nela já tem alguns possíveis erros)
    Anexos
    Duvida Importação de dados tabela excel para tabela access AttachmentIMPORTA DO EXCEL COM RECORDSET.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (37 Kb) Baixado 9 vez(es)
    alozs
    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 07/02/2018

    Duvida Importação de dados tabela excel para tabela access Empty Re: Duvida Importação de dados tabela excel para tabela access

    Mensagem  alozs em 29/3/2019, 01:27

    alguem?!  Rolling Eyes
    alozs
    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 07/02/2018

    Duvida Importação de dados tabela excel para tabela access Empty Re: Duvida Importação de dados tabela excel para tabela access

    Mensagem  alozs em 9/4/2019, 19:40

    ninguém?! até hj não consegui resolver isso, tentei tratar erro por erro mais não ficou legal
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Duvida Importação de dados tabela excel para tabela access Empty Re: Duvida Importação de dados tabela excel para tabela access

    Mensagem  Alexandre Neves em 11/4/2019, 15:44

    Boa tarde
    Veja o tratamento de erro por mensagem. Pode ajustar
    Código:
    Private Sub Comando0_Click()
        'On Error Resume Next
        '------------------------------------------------------------------'
        '              Adaptado do site UsandoAccess.com                  '
        '                Por FabioPaes em 24/01/2017                      '
        '------------------------------------------------------------------'
        '--------------------------------------------------------------'
        '      adaptado por Alexandre Neves, do Fórum MaximoAccess    '
        '            para validar dados antes da importação            '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
       
        Dim strTabela As String
        Dim strSQL As String
        Dim bdExcel As DAO.Database
        Dim rs, rs1 As DAO.Recordset
        'Passa o local e nome do arquivo para a variável
        strArquivo = CurrentProject.Path & "\Exemplo.xlsx"
        'Abre arquivo ListaClientes.xls
        Set bdExcel = OpenDatabase(strArquivo, False, False, "Excel 12.0;HDR=Yes;IMEX=0;")
        'Monta a consulta do Recordset
        strSQL = "SELECT * FROM [Planilha1$]"
        'Abre o Recordset da consulta
        Set rs = bdExcel.OpenRecordset(strSQL)
        'Abre o recordset na tabela que recebera os dados
        Set rs1 = CurrentDb.OpenRecordset("Tb_Produtos")
        'Adiciona os dados a tabela tb1
        Do While Not rs.EOF
            'valida dados
            If Len(rs("CodProd")) > 13 Then
                MsgBox "Código com tamanho de " & rs(0), , "Registo " & rs(0)
                GoTo ProxReg
            ElseIf rs("Preco") Like "[A-Z]" Then
                MsgBox "Preco irregular " & rs(0), , "Registo " & rs(0)
                GoTo ProxReg
            End If
            rs1.AddNew
            'verifico antes sem tem dados na primeira coluna, se tiver eu lanço, se nao eu ignoro!
            If Nz(Len(rs(0)), 0) > 0 Then
                rs1!CódigoDoProduto = rs(0) '0 é a primeira coluna do Excel
                rs1!Descricao = rs(1)
                rs1!unid = rs(2)
                rs1!Preco = rs(3)
                rs1!obs = rs(4)
                rs1.Update
            End If
    ProxReg:
            rs.MoveNext
        Loop
       
        'fecha o Recordset
        rs.Close
        Set rs = Nothing
        rs1.Close
        Set rs1 = Nothing
        'Fecha o arquivo Excel
        bdExcel.Close
        Set bdExcel = Nothing
        MsgBox "A Tabela foi Atualizada...", vbInformation, "Aviso"
    End Sub


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

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 07/02/2018

    Duvida Importação de dados tabela excel para tabela access Empty Re: Duvida Importação de dados tabela excel para tabela access

    Mensagem  alozs em 16/4/2019, 13:15

    muito obg pelo retorno Alexandre, estou adaptando aqui, minha única dificuldade agora vai ser adaptar os campos como por exemplo no campo (preço) colocar para aceitar somente números, campo data somente data e etc
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Duvida Importação de dados tabela excel para tabela access Empty Re: Duvida Importação de dados tabela excel para tabela access

    Mensagem  Alexandre Neves em 18/4/2019, 14:52

    Boa tarde
    Para tal, faça a verificação através de funções (IsDate, IsNumeric) ou criar função que necessita


    .................................................................................
    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

    Conteúdo patrocinado

    Duvida Importação de dados tabela excel para tabela access Empty Re: Duvida Importação de dados tabela excel para tabela access

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/7/2019, 14:02