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 dados da Planilha Excel para Tabela Access e atualizar registros existentes.

    avatar
    traderboy
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 16/01/2017

    [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes. Empty [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes.

    Mensagem  traderboy 2/9/2017, 03:50

    Amigos,

    Desde já agradeço pela disposição em me ajudar. Já busquei em vários posts relacionados a minha dúvida mas não consigo resolver o seguinte problema:

    Preciso fazer a importação dos dados de uma planilha Excel .xls. Até aí tudo bem, consegui fazer a importação para uma tabela temporária, e esta envia para outra tabela fixa. Ocorre que, na tabela fixa a chave primária é o numero do contrato, e quando o registro já existe, a importação dos dados da tabela Excel não é feita. Apenas importa os novos contratos, os que já existem, não são atualizados. Preciso que os registros já existentes sejam modificados (atualizados) pelos valores existentes na planilha Excel.

    Isso é possível?

    O que devo mudar no meu código VBA?

    Código:
    Private Sub importar_Click()
        ' Requer referencia a Microsoft Office 11 Object Library
    On Error GoTo PROC_ERR
      
       Dim fd As FileDialog
       Set fd = Application.FileDialog(msoFileDialogFilePicker)
      
       fd.Title = "selecione o arquivo"
       fd.Filters.Add "Arquivo XLS", "*.xls", 1  'se for o caso, mude a extensão para XLSX, onde estão xls

       fd.Show
      
       If (fd.SelectedItems.Count > 0) Then
           '------inicio importação excel para sincronização
           Dim strPathFile As String, strFile As String, strPath As String
           Dim strTable As String
           Dim blnHasFieldNames As Boolean
           blnHasFieldNames = True
           strPathFile = fd.SelectedItems(1)
           strTable = "TabImportTmp" 'planilha temporária que vai receber os dados do MS Excel.[/color]
          
          'apaga temporários, não é necessário, mas por segurança estou limpando a tabela antes
           DoCmd.RunSQL "Delete * from TabImportTmp"
          
           'importa para tabela local temporária
           DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames
           MsgBox "Registros importados com sucesso !" & vbCrLf & _
                 "Atualizando registros", vbInformation, Me.Caption
                  
                  
            'Declaração das Variaveis
    Dim DB As Database
    Dim rs As DAO.Recordset ' tabImportTmp - onde estão os dados que serão importados
    Dim rs1 As DAO.Recordset ' tabImport -  para onde irão os dados a serem importados.


    Set DB = CurrentDb()


       'Filtra os dados da tabela de Origem e Define a tabela de Destino dos dados.
       Set rs = DB.OpenRecordset("SELECT * FROM tabImportTmp ")
       Set rs1 = DB.OpenRecordset("tabImport")


    'Inicia a Gravação dos dados na Tabela de Destino (Dim rs1 As DAO.Recordset ' tabImport ) ,repete até COPIAR todos os Registros que foram selecionados
    Do While Not rs.EOF
           'Inicia a Gravação dos dados na tabImport
           rs1.AddNew
           rs1("contrato") = rs("contrato")
           rs1("cpf") = rs("cpf")
           rs1("diasAtraso") = rs("dias Atraso")
           rs1("operacao") = rs("operação")
           rs1("divida") = rs("divida")
           rs1("acao") = rs("ação")
           rs1("contatado") = rs("contatado")
           rs1("revertido") = rs("revertido")
           rs1.Update
       rs.MoveNext
       Loop

       'Ao Final Encerra as Conexões
       rs.Close
       rs1.Close
       DB.Close
          
           MsgBox "Operação concluída.", vbInformation, Me.Caption
          
           'apaga temporarios da tblprepostotmp que recebeu a importação.
           DoCmd.RunSQL "Delete * from TabImportTmp"
          
       Else
           MsgBox "Não foi escolhido nenhum arquivo", vbInformation, Me.Caption

       End If
      
    PROC_EXIT:
       Exit Sub
      
    PROC_ERR:
       DoCmd.Hourglass False
       If Err.Number = 3011 Then
          LocalXML = ""
          MsgBox ("Arquivo inválido.")
       Else
           MsgBox Err.Description
       End If
       Resume PROC_EXIT

    End Sub

    Obrigado!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes. Empty Re: [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes.

    Mensagem  Alvaro Teixeira 2/9/2017, 10:14

    avatar
    traderboy
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 16/01/2017

    [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes. Empty Re: [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes.

    Mensagem  traderboy 2/9/2017, 14:53

    Ola AhTeixeira,

    Deu super certo!!!

    Fico agradecido pela ajuda rápida e certeira. Vc é d+!

    Tive que fazer uns ajustes no código de acordo com minha tabela e planilha do Excel, e também nas consultas acréscimo e atualização.

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes. Empty Re: [Resolvido]Importar dados da Planilha Excel para Tabela Access e atualizar registros existentes.

    Mensagem  Alvaro Teixeira 2/9/2017, 14:59

    Olá Edson Carmo,
    Obrigado pelo retorno.
    A solução já estava no fórum. Smile
    Abraço

      Data/hora atual: 27/1/2023, 05:19