Blog

Postado em em 2 de abril de 2022

Banco de Dados com VBA Parte2 – Integração com Access

Na aula de hoje: banco de dados com VBA parte2. Vamos finalizar a integração com o VBA e fazer os testes com o formulário!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Banco de Dados com VBA Parte2

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Hoje nós vamos dar continuidade a aula de integração de banco de dados com VBA (integração do Access com VBA).

Nessa aula (Banco de Dados com VBA Parte2) nós vamos criar algumas macros VBA para poder cadastrar, editar e excluir informações no banco de dados.

Na aula anterior nós já fizemos a conexão com banco de dados, mas para essas ações nós temos que fazer essa conexão para cada uma delas.Então vamos criar uma macro para cada uma das ações e vamos atribuir essas macros ao formulário no VBA.

Lembrando que não vamos ensinar como criar esse formulário, pois já ensinamos aqui no canal e na descrição temos um minicurso de formulários caso queira aprender!Agora bora pra aula finalizar a integração com banco de dados e conseguir fazer as 3 ações de excluir, editar e cadastrar informações no banco de dados?

Banco de Dados – Exemplo

Temos um arquivo que armazena os dados de cadastro de funcionários de uma empresa.Ele foi disponibilizado para download junto com os arquivos de aula. Veja abaixo ele aberto:

Acessando os módulos

Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.

Já criamos na aula passada (Banco de Dados com VBA Parte 1 – Integração com Access) módulo destinado ao tema da aula de hoje. Portanto, vamos apenas acessá-lo. Veja abaixo os módulos já criados:



Vamos lidar nessa aula com o módulo “modInteracaoAccess”, adicionando novas “subs”, mostradas abaixo. Acompanhe cada sub e sua respectiva explicação.

Sub incluirBanco()


Dim conexaoBanco As ADODB.Connection
Dim entradaBanco As ADODB.Recordset

Set conexaoBanco = New ADODB.Connection
Set entradaBanco = New ADODB.Recordset

conectarAccess conexaoBanco

entradaBanco.Open "CadastroFuncionarios", conexaoBanco, adOpenKeyset, adLockOptimistic
 
entradaBanco.AddNew

entradaBanco.Fields("Nome").Value = userform_cadastro.caixatexto_nome.Value

If userform_cadastro.botaoopcao_feminino.Value = True Then
   entradaBanco.Fields("Gênero").Value = "Feminino"

Else
   entradaBanco.Fields("Gênero").Value = "Masculino"

End If

entradaBanco.Fields("Área").Value = userform_cadastro.caixacomb_area.Value

entradaBanco.Fields("CPF").Value = Format(userform_cadastro.caixatexto_cpf.Value, "000"".""000"".""000-00")

entradaBanco.Fields("Salário").Value = userform_cadastro.caixatexto_salario.Value

entradaBanco.Update

conexaoBanco.Close

Call atualizarPlanilha

End Sub

  Explicação do código acima:

  • Dimensionar:
  • Vamos configurar a “conexaoBanco” para representar uma nova conexão da biblioteca ADODB, através do comando Set VBA
  • Vamos configurar a “entradaBanco” para representar um conjunto de registros, que é um elemento da biblioteca ADODB também, através do comando Set VBA
  • Chamar a function “conectarAccess” criada na aula passada, passando como argumento pra ela a variável “conexaoBanco”. Rodando a function, ela vai entender que teremos que entrar no banco de dados passado pra ela, no caminho especificado
  • Após isso, vamos de fato abrir o banco de dados, considerando os argumentos:
    • de nome “CadastroFuncionarios”, dentro do arquivo que contém o banco de dados (extensão .accdb), que vai ser a nossa fonte de informações
    • que estará dentro da conexaoBanco, que é a nossa conexão, de fato
    • da forma adOpenKeyset, que vai ser a forma de pegar informações, sem ver uma possível exclusão por outra pessoa que manipula o banco de dados
    • e adLockOptimistic, que é o tipo de bloqueio da nossa entrada (para edições simultâneas) que vai assumir que ninguém vai estar atualizando o banco de dados no momento, assumindo que poucas pessoas ou só você o modifica
  • Criar uma nova entrada no banco de dados (célula/linha)
  • Preencher o campo “Nome” com o valor que está na “caixatexto” do nosso “userform_cadastro”
  • Preencher o campo “Gênero” com o valor “Feminino” se o “botaoopcao_feminino” estiver selecionado (valor = “True”). Se não estiver selecionado (Valor = “False”), o campo vai ser preenchido com “Masculino”
  • Preencher o campo “Área” com o valor da “caixacomb_area”
  • Preencher o campo “CPF” com o valor da “caixatexto_cpf” formatado para o formato de CPF através da função Format
  • Preencher o campo “Salário” com o valor da “caixatexto_salario”
  • Atualizar a entradaBanco (conjunto de registros)
  • Fechar/desativar a conexão com o banco de dados (desativar a variável “conexaoBanco”)
  • Vamos chamar a macro criada na aula passada, a atualizarPlanilha, que vai atualizar a planilha de Excel com os dados presentes no banco de dados
  • Se encerra o código
Sub editarBanco()

Dim conexaoBanco As ADODB.Connection
Dim entradaBanco As ADODB.Recordset
Dim textoTabela As String

Set conexaoBanco = New ADODB.Connection
Set entradaBanco = New ADODB.Recordset

conectarAccess conexaoBanco

textoTabela = "Select * From CadastroFuncionarios Where ID = " & CLng(userform_cadastro.caixatexto_id.Value)

entradaBanco.Open textoTabela, conexaoBanco, adOpenKeyset, adLockOptimistic

If userform_cadastro.caixatexto_nome.Value <> "" Then entradaBanco.Fields("Nome").Value = userform_cadastro.caixatexto_nome.Value

If userform_cadastro.botaoopcao_feminino.Value = True Then
   entradaBanco.Fields("Gênero").Value = "Feminino"

ElseIf userform_cadastro.botaoopcao_masculino.Value = True Then
   entradaBanco.Fields("Gênero").Value = "Masculino"

End If

If userform_cadastro.caixacomb_area.Value <> "" Then entradaBanco.Fields("Área").Value = userform_cadastro.caixacomb_area.Value

If userform_cadastro.caixatexto_cpf.Value <> "" Then entradaBanco.Fields("CPF").Value = Format(userform_cadastro.caixatexto_cpf.Value, "000"".""000"".""000-00")

If userform_cadastro.caixatexto_salario.Value <> "" Then entradaBanco.Fields("Salário").Value = userform_cadastro.caixatexto_salario.Value

entradaBanco.Update


conexaoBanco.Close

Call atualizarPlanilha

End Sub

Explicação do código acima:

 Dimensionar:

Sub excluirBanco()

Dim conexaoBanco As ADODB.Connection
Dim entradaBanco As ADODB.Recordset
Dim textoTabela As String

Set conexaoBanco = New ADODB.Connection
Set entradaBanco = New ADODB.Recordset

conectarAccess conexaoBanco

textoTabela = "Select * From CadastroFuncionarios Where ID = " & CLng(userform_cadastro.Value)

entradaBanco.Open textoTabela, conexaoBanco, adOpenKeyset, adLockOptimistic

entradaBanco.Delete
entradaBanco.Update
conexaoBanco.Close

Call atualizarPlanilha

End Sub

Explicação do código acima:

  • Dimensionar:
  • Vamos configurar a “conexaoBanco” para representar uma nova conexão da biblioteca ADODB, através do comando Set VBA
  • Vamos configurar a “entradaBanco” para representar um conjunto de registros, que é um elemento da biblioteca ADODB também, através do comando Set VBA
  • A variável “textoTabela” vai receber o seguinte comando de linguagem SQL: selecionar todas as colunas da tabela “CadastroFuncionarios” em que o ID for igual ao que tiver na “caixatexto_id” do “userform_cadastro”
  • Após isso, vamos de fato abrir o banco de dados, considerando os argumentos:
    • de nome “textoTabela”, dentro do arquivo que contém o banco de dados (extensão .accdb), que vai ser a nossa fonte de informações, mas apenas com a linha de ID desejada (configurada anteriormente)
    • que estará dentro da conexaoBanco, que é a nossa conexão, de fato
    • da forma adOpenKeyset, que vai ser a forma de pegar informações, sem ver uma possível exclusão por outra pessoa que manipula o banco de dados
    • e adLockOptimistic, que é o tipo de bloqueio da nossa entrada (para edições simultâneas) que vai assumir que ninguém vai estar atualizando o banco de dados no momento, assumindo que poucas pessoas ou só você o modifica
  • Em seguida vamos deletar (Delete, em inglês) essa linha (registro) do banco de dados (conjunto de registros)
  • Atualizar a entradaBanco (conjunto de registros)
  • Fechar/desativar a conexão com o banco de dados (desativar a variável “conexaoBanco”)
  • Vamos chamar a macro criada na aula passada, a atualizarPlanilha, que vai atualizar a planilha de Excel com os dados presentes no banco de dados
  • Se encerra o código

Conclusão do Banco de Dados com VBA Parte2

Nessa aula você aprendeu a lidar com:

Valeu, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA toda semana! Um abraço!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Vire uma referência no Mercado de Trabalho por causa do Power BI!

Quer saber como? Inscreva-se no Intensivão de Power BI! É gratuito!