Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Actualização de BD em Access a partir do Excel

Discussões sobre a integração do Excel com o Banco de Dados Access

Moderador: joseA

jcabral
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jun 04, 2020 9:42 pm

Actualização de BD em Access a partir do Excel

Mensagem por jcabral »

Estou a começar a trabalhar na integração entre o Excel e o Access, mantendo o Excel como o Front-end das minhas aplicações e o Access apenas como base de dados.

Contudo surgiu-me uma duvida que não sei como resolver. Na imagem cujo link deixo aqui está resumido o fluxo de informação que tenho - https://www.sendspace.com/file/z5tlwr
Imagem1.png
Imagem1.png (389.73 KiB) Exibido 7138 vezes
- ou seja tenho 3 usuários que trabalham em três planilhas do Excel, iguais no formato mas com informação diferente e o que pretendo é verter para uma base de dados em Access a informação gerada e depois através de uma outra planilha em Excel, o meu FRONT-END, vou buscar e tratar a informação de cada usuário que está na BD do Access.

O que pretendo e não sei se é possível é que sempre que eu abrir o meu Front-end ele "abre" a BD em Access (para buscar dados) e esta base de dados actualiza-se automaticamente com os dados das três planilhas, isto é possível de fazer de uma forma automática e directamente a partir do Front-End, sem ter que ir ao Access?
É possível , pex., eu ter um botão num menu no meu Front-end que me faça a actualização dos dados da BD em Access para que quando eu fizer uma consulta a partir do Front-end os dados estejam actualizados?

Espero ter sido claro na minha duvida.
Agradecido
Jorge Cabral

NB: Tb aqui - http://www.planilhando.com.br/forum/vie ... 25&t=33607


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Actualização de BD em Access a partir do Excel

Mensagem por Raygsson »

É uma demanda bem viável, porém voce deve ter algum conhecimento da linguagem SLQ para fazer a Inserção, Atualização, Exclusão e Seleção (INSERT, UPDATE, DELETE e SELECT) no banco de dados Access, comandos basicos SQL.
Deixe selecionada a biblioteca VBA "Microsoft ActiveX Data Object" na versão mais atual que possuir no seu Excel.
Vai precisar tambem conectar o Excel ao Access, pra isso segue um modelo básico da conexão com o banco access na minha area de trabalho e de uma consulta (SELECT) básica:

Sub ConsultarBD()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strCn As String
Dim SQL As String

Set cn = New ADODB.Connection
strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Raygsson\Desktop\MeuBanco.accdb"
cn.Open strCn

Set rs = New ADODB.Recordset

SQL = " SELECT * FROM MinhaTabela "
rs.Open SQL, cn

Plan1.Range("C3").CopyFromRecordset rs

cn.Close

End Sub


jcabral
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jun 04, 2020 9:42 pm

Re: Actualização de BD em Access a partir do Excel

Mensagem por jcabral »

Boa tarde caro Raygsson

Desde já agradeço a sua resposta, mas julgo que não consegui expressar bem qual a minha dúvida.
O meu problema não é fazer a Inserção, Actualização, Exclusão e Selecção de dados na BD do Access a partir do FRONT-END, o meu problema é actualizar de forma automática a BD em Access com os dados das três folhas de cálculos, ver o fluxo de informação que tenho, sempre que abro o FRONT-END, ou seja, como posso garantir que os dados na BD do Access estão sempre actualizados, sem ter que ir directamente ao Access e fazer manualmente essa actualização?

Obrigado
Jorge Cabral


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Actualização de BD em Access a partir do Excel

Mensagem por Reinaldo »

Deprende-se que existem 4 front-end "acessando" uma base, onde 3 desses F-E "realizam" input's (porem não informa tipo/maneira/frequência...., e um "retira" informações; tambem sem informar tipo/necessidade/frequencia.
"...fazer manualmente..."
A que chama de manualmente, qual o(s) procedimento(s) / etapa(s) para atualização?
"...como posso garantir..."
Essa garantia seria do próprio Access, caso seu front-end seja também Access(.mde)
Sugestão:
Não é possível, sendo apenas 4 envolvidos "marcar" um horário para que os procedimentos seja efetuados


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Actualização de BD em Access a partir do Excel

Mensagem por Raygsson »

Se voce sabe os comandos pra mexer no banco pode escrever o codigo da rotina de atualização do banco e chama com algum evento ou botão no excel. exemplo:
Private Sub Workbook_Open()
Call Atualizar_BD
End Sub
ou
Private Sub Worksheet_Activate()
Call Atualizar_BD
End Sub
ou qualquer outro evento que servir.
Fora isso tem que verificar possíveis conflitos na manipulação do banco por diversos usuarios ao mesmo tempo, nao sei muito bem como o Access lida com isso.


jcabral
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jun 04, 2020 9:42 pm

Re: Actualização de BD em Access a partir do Excel

Mensagem por jcabral »

Reinaldo escreveu: Seg Jul 13, 2020 3:43 pm Deprende-se que existem 4 front-end "acessando" uma base, onde 3 desses F-E "realizam" input's (porem não informa tipo/maneira/frequência...., e um "retira" informações; tambem sem informar tipo/necessidade/frequencia.
"...fazer manualmente..."
A que chama de manualmente, qual o(s) procedimento(s) / etapa(s) para atualização?
"...como posso garantir..."
Essa garantia seria do próprio Access, caso seu front-end seja também Access(.mde)
Sugestão:
Não é possível, sendo apenas 4 envolvidos "marcar" um horário para que os procedimentos seja efetuados

Caro Reinaldo
Não existem 4 Front-End, existe apenas um.
O que tenho, e vamos simplificar e dar um exemplo muito simplista, são três lojas que geram informação, pex peça vendida e custo de cada peça. Todos as três geram informação do mesmo género mas diferentes – as três folhas de Excel.
O que pretendo é que sempre que abro o Front-End que é o meu ficheiro Excel (não considero os outros três como Front-End) a Base de Dados em Access atualiza as tb1, tb2 e tb3 com os dados de cada uma das lojas (Peça Vendida e Custo Peça Vendida) e eu depois trabalho no meu Front-End essa informação, o que faço no Front-End não é importante, o importante é como posso atualizar a BD Access sem ter que abrir o ficheiro e fazer a atualização manualmente no Access – Botão Atualizar tudo.
Outra coisa que pretendia era ter um botão ao qual estará associada uma macro(?) que me atualizaria a BD Access sempre que eu quisesse, já que não é possível ter horas marcadas para fazer os updates da BD Access.
Não sei se fui claro.
Obrigado
Jorge


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Actualização de BD em Access a partir do Excel

Mensagem por Reinaldo »

Como disse, se fosse tudo em Access, as infos seriam incluídas diretamente no banco, sem necessidade de qualquer atualização, e disponibilidade de dados sempre atuais.
Como e/está, o proposto pelo colega Raygsson creio ser a melhor alternativa.
Em seu front-end (ou onde desejar) deve ser montado/estruturado a rotina de atualização, que lê e separa os dados desejados e a inclui e/ou altera no banco/tabela correspondente.


jcabral
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jun 04, 2020 9:42 pm

Re: Actualização de BD em Access a partir do Excel

Mensagem por jcabral »

Obrigado, pelas suas dicas, mas de facto não pode ser tudo em Access devido às limitações que existem não só em termos de cálculos como em termos de apresentação de resultados, além de que não estou muito à vontade a trabalhar em Access, apenas uso como BD.
Acresce que a solução do Raygsson não resolve a minha necessidade, já que a BD em Access apenas vai servir para agregar os dados das diferentes lojas, ou seja apenas vai existir actualizações das tabelas referentes a cada loja, e depois o Front-End apenas vai ler dados, não vai haver inserções, actualizações, modificações de dados quer a partir do Front-End quer a partir a partir de cada ficheiro das lojas.
A solução tem que ser mais simples e estou crente que existe.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Actualização de BD em Access a partir do Excel

Mensagem por Reinaldo »

Creio que está a fazer confusão.
A proposta/sugestão a que me referi

Código: Selecionar todos

Private Sub Workbook_Open()
Call Atualizar_BD
End Sub
"...BD em Access..." / "...não vai haver inserções, atualizações, modificações..."
Sozinho o DataBase não agrega nenhum dado, É preciso um estimulo, seja diretamente no Access ou via externa.
Esse estimulo deve ser considerado como uma inserção / atualização / modificação (nem todas obrigatoriamente juntas)
Porem esse estimulo externo deve ser "construido" (pois pelo que demonstra o mesmo não existe) e atribuído um nome a essa rotina (sugerido pelo colega "Atualizar_BD");
a partir da existência dessa rotina, deve ser decidido como inicia-la, foi sugerido utilizar o evento Open da planilha Front-End ("Private Sub Workbook_Open()".
Como estamos às cegas não é possível sugerir qualquer detalhe para construção dessa rotina, pois apenas tu sabes o que contem as planilhas e o DataBase, onde estão quais tabelas correspondem , ainda se uma nova planilha substitui completamente a tabela existente ou não.


jcabral
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jun 04, 2020 9:42 pm

Re: Actualização de BD em Access a partir do Excel

Mensagem por jcabral »

Caro Reinaldo
Acho que agora estamos quase a falar sobre o mesmo.
Só um pequeno esclarecimento, quando referi que na BD_Access "...não vai haver inserções, actualizações, modificações...", pensei que tinha ficado claro que isto não é um modelo de cadastro, a BD_Access serve apenas para agregar dados de todas as lojas, obviamente que as tabelas têm que ser actualizadas, mas apenas isso, não vai haver mais nenhum tipo de acção sobre os dados da BD_Access, nem alterar, nem deletar, nem modificar um campo, nem editar nada, apenas actualizar cada tabela com novos dados que existam em cada ficheiro das lojas.
Agora você falou a palavra correta, "estimulo", e o meu problema é esse, quero que o estimulo para a BD_Access se actualizar seja dado a partir do Front-End, de duas formas quando abro o Front-End.....ele estimula (não sei como) a BD_Access e ela actualiza-se com os dados de cada ficheiro das lojas e quando carrego num botão qualquer (pode estar no ribbon) no Front-End.
O meu problema está precisamente em como "programar" esse estimulo.
Preparei os ficheiros com dados fictícios mas tudo preenchido à mão, se achar que pode ajudar.
Front_End.zip
(62.1 KiB) Baixado 255 vezes
Obrigado mais uma vez
Jorge


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder