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 do Excel No Access

    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 5/8/2014, 16:34

    Pessoal,
    boa tarde!

    Poderiam me ajudar com as minhas dúvidas abaixo:

    Estou fazendo um importe de dados do Excel para a tabela Access e este importe sera mensalmente.
    Os registros do Excel, poderão ser os mesmos já importados ou terá novos registros para inserção.


    Pergunto:
    1 - Como incluir apenas novos registros do Excel no Access, caso alguns dados já existam no Access?

    2 - Na hora do importe, se a data do registro que esta no Excel for diferente da que já consta no Access, como posso atualizar apenas esta data no Access é o restante do registro e descartado pois já existe no banco?

    3 - Quando for fazer o importe, qual o comando que posso utilizar para seja buscada a planilha da mesma pasta aonde encontra a base Access ? sem precisar digitar todo o caminho aonde se encontra a planilha?

    Bom seria isso, espero que tenha me explicado bem.

    Muito obrigado a todos.

    Bruno.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Alvaro Teixeira 6/8/2014, 11:27

    Olá,

    Verifica o tópico do link abaixo, em especial a mensagem nº 7 e 9.

    http://maximoaccess.forumeiros.com/t19615-resolvidoatualizacao-automatica-access

    Ficamos aguardar o retorno.

    Abraço
    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 6/8/2014, 14:35

    ahteixeira

    Obrigado pelo retorno.

    Então, eu estou fazendo o meu import diferente, sem utilizar o TransferSpreadsheet pois tenho que selecionar algumas colunas apenas de uma planilha excel.

    O meu codigo de importação esta desta maneira abaixo:

    Código:


     Dim oRS As DAO.Recordset, i As Integer, j As Integer, SFile As String
        Dim oXL As Excel.Application
        Dim oWb As Excel.Workbook
        Dim oWs As Excel.Worksheet
        Dim oSelect As Excel.Range
       
       
        Set oXL = CreateObject("Excel.Application")
        SFile = Application.CurrentProject.Path & "\CONTROLE DE PROJETOS BUILD.xlsx"
       
        Set oWb = oXL.Workbooks.Open(SFile)
        Set oWs = oWb.ActiveSheet
        Set oSelect = oWs.Cells(1, 1).CurrentRegion
        Set oRS = CurrentDb.OpenRecordset("TBL_DADOS")
             
          'LOOP para inclusao dos dados do Excel para base Access
          For i = 2 To oSelect.Rows.Count
                oRS.AddNew
                  oRS.Fields(1) = oSelect.Range("A" & i)  'Descrição
                  oRS.Fields(2) = oSelect.Range("B" & i)  'Cod_PCubo
                  oRS.Fields(3) = oSelect.Range("D" & i)  'Eixo
                  oRS.Fields(4) = oSelect.Range("F" & i)  'IPM_Responsável
                  oRS.Fields(5) = oSelect.Range("G" & i)  'Data de Implantação
                  oRS.Fields(6) = oSelect.Range("H" & i)  'Status
                  oRS.Fields(10) = oSelect.Range("L" & i) 'CM_Infra
                  oRS.Fields(11) = oSelect.Range("M" & i) 'SM Santander
                  oRS.Fields(12) = oSelect.Range("N" & i) 'Detalhes do Projeto
                  oRS.Fields(13) = oSelect.Range("P" & i) 'Gerente Executivo ISBAN
                  oRS.Fields(14) = oSelect.Range("Q" & i) 'Lider Técnico ISBAN
                  oRS.Fields(15) = oSelect.Range("T" & i) 'Sigla Nova
                oRS.Update
          Next i
      oXL.Quit
      MsgBox "Dados importados com sucesso", vbInformation, "Status"

    Ele funciona certinho, mas não tenho estes seus controles.

    Será que da para adaptar os seus processos das querys neste codigo acima?

    Realmente pelo que vi é aquilo mesmo que preciso:

    Se for adicionado um registro, identificar com uma flag (SIM/NAO) para saber se o registro que acabou de ser inserido é novo.
    Se for o mesmo registro a ser importado, checar se houve alguma alteração em algum dos campos, se SIM, alterar os valores da base pelo que esta no
    Excel.
    Se for o mesmo registro já inserido não faz nada.

    Podes me ajudar ?

    Muito obrigado.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Alvaro Teixeira 6/8/2014, 16:35

    Olá,

    É apenas um exemplo e poderá ser efetuado de várias formas.
    Quanto ao teu método de importação pode ser , só não compreendi se a tabela TBL_DADOS é a tabela definitiva.
    Pois da forma que exemplifico no outro post é efetuada uma importação para uma tabela temporária e depois é utilizado consultas para efetuar as várias etapas de actualização.
    As consultas podem ser efetuadas diretamente em VBA, mas optei por chamar em VBA as consultas para ser mais fácil para os utilizadores menos experientes poderem ver como estão construídas.

    Caso seja necessária mais alguma consulta para um tratamento especial dos dados a sincronizar é só criar e acrescentar a chamada no VBA.

    Caso tenhas dificuldades, será melhor postar pequeno exemplo de excel e ficheiro de access com a tabela que pretendes atualizar (com alguns dados de exemplo).

    Abraço

    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 7/8/2014, 03:06

    ahteixeira

    Isso mesmo, tenho apenas a tabela TBL_DADOS aonde são carregado os dados.

    Então, eu vi o seu exemplo e parece que se encaixa certinho para mim, pois tudo que você faz na sua base de exemplo é o que eu preciso fazer na minha.

    Mas como vi o seu exemplo, estou criando tmb uma tabela temporária para fazer o meu processo parecido com o seu.

    Vou tentar fazer alguma coisa aqui seguindo o seu exemplo.

    Agora se se possível, de acordo com o meu código mencionado do importe, de que forma eu poderia encaixar as suas querys ao meu código VBA para efetuar aqueles controles: "se novo insere", "se ocorrer alguma atualizacao, atualiza o campo especifico" ou se nao teve alteracao nao faz nada ?

    Poderia me dar uma luz nesta questão ?

    Muito Obrigado mais uma vez.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Alvaro Teixeira 7/8/2014, 08:39

    Olá,

    O código pode ser colocado na linha anterior ou seguinte onde tens a instrução:

      MsgBox "Dados importados com sucesso", vbInformation, "Status"

    e aproveitando do meu exemplo teria de seguida:

           'apaga temporarios
           DoCmd.RunSQL "Delete * from ExcelTmp" 'Alterar para TBL_DADOS_TMP conforme mensagem nº 9
           'importa para tabela local temporária
           DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames 'Não utilizar esta linha uma vez que optou pelo código da mensagem nº3
           'sql verifica existentes e marca com não novo
           DoCmd.OpenQuery "xls01marcaExistentes", acViewNormal, acEdit
           'sql atualiza existentes
           DoCmd.OpenQuery "xls02AtualizaExistentes", acViewNormal, acEdit
           'sql lança novos no ficheiro funcionarios
           DoCmd.OpenQuery "xls03LancaNovos", acViewNormal, acEdit
           
           MsgBox "Operação concluída.", vbInformation, ""
           
           'apaga temporarios
           DoCmd.RunSQL "Delete * from ExcelTmp" 'Alterar para TBL_DADOS_TMP conforme mensagem nº 9


    Abraço


    Última edição por ahteixeira em 7/8/2014, 16:04, editado 5 vez(es)
    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 7/8/2014, 13:40

    ahteixeira,

    Muito obrigado, vou corrigir as minhas tabelas e trabalhar em cima dos seus itens.

    Assim que terminar e testar ja posto aqui .

    Muito Obrigado.
    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 7/8/2014, 15:02

    Atraves deste comando abaixo:

    Código:

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9"

    Ao invés de importar todas as colunas da planilha excel, tem como importar apenas algumas específicas ?
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Alvaro Teixeira 7/8/2014, 15:53

    Olá,

    Parece que a importação já estava a funcionar, assim sendo acho que deverias apenas alterar para uma tabela temporária ou seja:

    Onde tens:   Set oRS = CurrentDb.OpenRecordset("TBL_DADOS")
    Deverás colocar:     Set oRS = CurrentDb.OpenRecordset("TBL_DADOS_TMP")

    (Não te esqueças de copiar a estrutura da tabela de TBL_DADOS para TBL_DADOS_TMP e acrecentar o camo NOVO

    Depois é necessário ajustar as consultas conforme pretendido. (não esquecer que o nome das tabelas e campos são diferentes do exemplo)

    Caso necessário poderás acrescentar mais consultas para tratamento da informação como pretendido.

    Depois acrescentar no código conforme exemplifiquei na mensagem nº 6
    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 7/8/2014, 20:10

    ahteixeira

    Muito obrigado, deu certinho o processo do importe ajustando igual ao seu.

    Agora se for possível:

    1 - Como posso colocar no meu formulário, um indicador dos passos que estão sendo executados, tipo: Deletado Tabela, Incluindo dados, em assim por diante?

    2 - Precisaria contar também os novos registros incluidos pela data, pois no meu banco, coloquei um campo especifico de data para que todo registro que for carregado e incluido a data que ele foi inserido.

    Poderia me ajudar em mais estas ?

    Mais uma vez obrigado.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Alvaro Teixeira 8/8/2014, 12:24

    Olá,

    Para a mensagem , podes criar um campo texto no teu form txtEstadoImportar
    No código é dizer que o campo  txtEstadoImportar = "mensagem desejada" colocar logo de seguida o comando DoEvents para atualizar o form

    Quanto à 2ª questão, acho que pode ser com a função  DCount, podes efetuar uma procura aqui no forum que não falta exemplos.

    Não se esqueça de dar o tópico como resolvido, veja link abaixo:
    http://maximoaccess.forumeiros.com/t860-resolucao-de-topicos

    Se tiveres dificuldades abre um novo tópico.

    Obrigado pelo retorno.
    Um Abraço,


    Última edição por ahteixeira em 8/8/2014, 14:11, editado 1 vez(es)
    Brunoreiss
    Brunoreiss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss 8/8/2014, 13:06

    Muito obrigado

    Vou testar mais estas suas dicas e precisando abro outro tópico.

    Abraços

    Conteúdo patrocinado


    [Resolvido]Importar Dados do Excel No Access Empty Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/3/2024, 04:02