Ajuda - Busca - Membros - Calendário
Versão Completa: Atualizar Dados De Funcionários
Fórum Ativo Access > Componentes do Access > Tabelas e Relacionamentos
Fábio Bulhões Santos
Pessoal, boa noite!

Montei um banco de dados que tem como base a tabela funcionários. todo mês uma pessoa do me manda uma planilha do excel com os nomes e na maioria deles seus cargos e setores dos mesmos funcionários estao modificados. Qual a melhor forma de atualizar baseando-se na matricula deles que neste caso não muda?


Agradeço mais uma vez
Roberto Pires
Crie uma rotina de importação da Planilha para uma Tabela Temporária do Access.

Com essa Tabela você consegue vincular com a Tabela Oficial e testar quais campos tiveram modificações e fazer sua atualização.

Veja um código de exemplo para você automatizar a importação:

CODE
Public Sub ImportaXLS(Arquivo As String)
    DoCmd.SetWarnings False
        DoCmd.RunSQL "Delete * From TempDados"
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, "TempDados", Arquivo
        DoCmd.OpenQuery "AtualizaDados"
    DoCmd.SetWarnings True
End Sub


1-Limpo a Tabela TempDados.
2-Importo s Planilha para a Tabela TempDados.
3-Executo a Consulta AtualizaDados.
Fábio Bulhões Santos
Roberto, muito obrigado..

O nome da minha planilha nova deixo na pasta como "ATUALIZAR". Nessa parte ainda me atrapalho, por favor me oriente como devo utiliza o código


Um abraço,
Roberto Pires
Primeiro você deve fazer uma rotina de importação Manual da sua planilha para criar a estrutura da sua Tabela.
Vai em Arquivo - Obter Dados Externos - Importar-Selecione Microsoft Excel *.xls - Selecione a Planilha e siga as etapas da importação.
Um item importante aqui será: A primeira linha contém títulos de coluna. Caso seja assinalado os Campos da Tabela terão o mesmo nome que estão na 1 linha da planilha, senão os campos serão nomeados; Campo1,Campo2,Campo3...

Caso você mantenha os títulos da coluna como na planilha então na importação via código basta você informar esse parâmetro (Veja abaixo). Senão, omitindo esse parâmetro os nomes dos campos serão F1,F2,F3..., diferente da importação manual portanto. Dessa forma basta ir na estrutura da Tabela e deixar nesse padrão, para o código importar sem problemas.

Feita essa observação basta você rodar o código para testar.

Caso sua Tabela tenha os mesmos campos da Planilha:

CODE
Public Sub ImportaXLS(Arquivo As String)
    DoCmd.SetWarnings False
        DoCmd.RunSQL "Delete * From TempDados"
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, "TempDados", Arquivo, True
        DoCmd.OpenQuery "AtualizaDados"
    DoCmd.SetWarnings True
End Sub


Caso sua Tabela tenha os campos F1,F2,F3,F4...

CODE
Public Sub ImportaXLS(Arquivo As String)
    DoCmd.SetWarnings False
        DoCmd.RunSQL "Delete * From TempDados"
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, "TempDados", Arquivo
        DoCmd.OpenQuery "AtualizaDados"
    DoCmd.SetWarnings True
End Sub


E para chamar de um botão de comando de um Formulário por exemplo, suponhando que sua planilha tenha um caminho fixo:

CODE
Private Sub ImportarDados_Click()
ImportaXLS "D:\Backup\Desktop\ATUALIZAR.xls"
End Sub
Fábio Bulhões Santos
Roberto, valeu mesmo!

Estava dando erro na parte


"DoCmd.RunSQL "Delete * From TempDados"

Retirei e funciona perfeitamente

Um abraço!
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2019 Invision Power Services, Inc.