Você está na página 1de 22

1.

Listbox VBA: Preencher Dados Da Tabela Access

O listbox apesar ser uma ferramenta simples para listagem de dados, é


um dos controles mais usados na programação vba. Eu
particularmente gosto bastante dele, apesar que hoje não o utilizo
muito em meus projetos.

Algumas limitações do listbox me fizeram migrar para outros controles


de listagem, mas ainda o uso quando preciso. Nesse post não irei me
aprofundar nesse assunto, deixarei esse link caso não saiba o que é o
listbox.

Hoje quero mostrar para vocês uma forma simples de listar dados de
uma tabela access no listbox. Se você ainda não sabe realizar
conexões com o banco de dados access, o artigo a seguir irar ajudar
você nessa façanha.

→Registrar Dados Do VBA Excel No Access

Listbox Do VBA – Preencher Com Dados


Do Access
Evite acentos no nome das colunas da tabela…

Abra seu access e crie um novo banco de dados que chamaremos


de Banco. Nesse BD devemos criar uma tabela que se chamará
de TBDados, e ela terá os campos Codigo, Nome, Idade e Sexo.
lembre-se de marca a referência ADO…

Após criar sua base de dados, abra seu excel e adicione um novo
módulo. Dentro desse módulo nós iremos desenvolver o código que
se conectará com nossa base de dados (Banco).

Public db As New ADODB.Connection

Public rs As New ADODB.Recordset

Public CaminhoBanco As String


Public Sub ConectDB()

CaminhoBanco = ActiveWorkbook.Path & "\Banco.accdb"

db.Open "Provider=microsoft.ACE.oledb.12.0 ;data Source =" & CaminhoBanco

End Sub

Public Sub FechaDB()

Set db = Nothing

Set rs = Nothing
End Sub

Apenas mudei os Captions dos controles…

Uma vez criada a estância de conexão precisamos incluir um novo


UserForm, e a ele adicionar o controle listbox  e
um CommandButton .  Nesse projeto nós optamos por deixar as
propriedades padrões dos controles.
De um duplo clique no “botão preencher” do formulário e dentro do
seu evento clique vamos adicionar o nosso código.

Dim LinhaListbox As Integer

LinhaListbox = 0

ListBox1.Clear

ListBox1.ColumnCount = 4

ListBox1.ColumnWidths = "40;120;40;55"

ConectDB
rs.Open "Select * from TBDados", db, 3, 3

Do Until rs.EOF

With ListBox1

.AddItem

.List(LinhaListbox, 0) = rs!Codigo

.List(LinhaListbox, 1) = rs!Nome

.List(LinhaListbox, 2) = rs!idade
.List(LinhaListbox, 3) = rs!Sexo

LinhaListbox = LinhaListbox + 1

End With

rs.MoveNext

Loop

FechaDB
Pronto você agora pode preencher seu listbox com os dados da tabela.
Nesse exemplo nós criamos os comandos dentro do próprio formulário,
se você estiver usando módulos lembre-se de referenciar o formulário.
Por fim é isso! Para baixar o arquivo de referência desse artigo, clique
no link a seguir.

Clique Nesse Link Para Fazer O Download

https://diarioexcel.com.br/dados-do-access-na-listbox/
1. Pesquisa VBA: Consultar Dados Da Tabela Access

Nesse artigo irei mostrar como podemos realizar buscas na tabela do


access diretamente pelo excel vba (Pesquisa VBA). Antes gostaria de
lembrar que esse artigo é o tópico 3 de uma serie de três posts, neles
nós aprendemos:

 Criar, Conectar, Gravar dados do VBA para BD Access


 Alterar e Excluir dados do Access pelo vba
 Pesquisar Pelo BD Access no VBA

Lembrando que se houver duvidas a respeito dos artigos, aqui em


baixo temos uma seção de comentários. Não se esqueça de
compartilhar esse post, pois estará atribuindo grande força para nosso
canal.

Pesquisa VBA – Pesquisar Dados De Uma


Tabela Access

Ontem eu postei um artigo no site ensinando como preencher dados


de uma tabela access no listbox. Você deve ir nesse artigo e baixar o
projeto que criamos para ele, pois o usaremos como referencia nesse
artigo.

Após fazer o download dos arquivos na guia vba você terá o seguinte
projeto:
Nesse projeto precisamos incluir uma TextBox, CommandButton e
uma Label.  A propriedade da TextBox deve ser padrão, apenas
renomearemos o Caption  da Label1 para Campo Busca e
do CommandButton2  para pesquisar:

Lembre-se que esse projeto já possui um banco de dados pronto, você


deve apenas seguir os passos. De um duplo clique sobre o botão
“Pesquisar” e dentro do seu evento clique, digite o seguinte
comando:

Dim vBusca As String

Dim LinhaListbox As Integer

LinhaListbox = 0

ListBox1.Clear

ListBox1.ColumnCount = 4

ListBox1.ColumnWidths = "40;120;40;55"

vBusca = TextBox1.Text
ConectDB

rs.Open "Select * from TBDados where Nome like'" & Replace(vBusca, "'", "''") & "%'",

db, 3, 3

Do Until rs.EOF

With ListBox1

.AddItem
.List(LinhaListbox, 0) = rs!Codigo

.List(LinhaListbox, 1) = rs!Nome

.List(LinhaListbox, 2) = rs!idade

.List(LinhaListbox, 3) = rs!Sexo

LinhaListbox = LinhaListbox + 1

End With
rs.MoveNext

Loop

FechaDB

Pesquisa VBA – Sobre A Função De Busca


Do Access

Se você não sabe o access usa o SQL para trabalhar com dados.  O
SQL é uma linguagem de computador para trabalhar com conjuntos de
fatos e as relações entre elas. Programas de banco de dados como o
Access, usam essa linguagem.

Você pode usar SQL para descrever os conjuntos de dados que podem
ajudá-lo a responder perguntas. Quando você usa SQL, você deve usar
a sintaxe correta. Sintaxe é o conjunto de regras pela qual os
elementos de um idioma são combinados corretamente.

Por exemplo, o comando que fizemos logo a cima possui instruções


SQL:

rs.Open "Select * from TBDados where Nome like'" & Replace(vBusca, "'", "''") & "%'", db, 3, 3
Nesse projeto criamos um banco de dados e o chamamos de Banco.
Nesse BD também adicionamos uma tabela e a chamamos TBDados,
essa tabela possui 4 colunas: Código, Nome, Idade e Sexo:

Para buscar uma string no access, você deve usar o operador like.


Esse operador é usado em uma cláusula WHERE para procurar um
determinado padrão em uma coluna. Aqui o like foi usado para buscar
registros de nossa TBDados na coluna Nome, retornando o conjunto
de dados relacionados a nossa string de busca.

A variável vBusca recebe o texto digitado da TextBox “Busca” por


exemplo. Se eu digitar o nome Julio na textbox “Busca” do meu
formulário, o programa retornará todos os  registros com nome de
Julio.
“Ou seja, todos que começam com a letra M”

Observe que ao digitar a letra M o programa retorna vários registros.


Isso acontece porque em nosso comando nós indicamos o %, essa
expressão traz conjuntos de dados de uma forma generalizada.

Se você quiser retornar o conjunto exato de registros, basta remover a


expressão %.  Antes que você pergunte para que serve o Replace,
ele é uma função do vba que nesse caso evita erros de consulta por
exemplo:

Se o usuário digitar algo do tipo ”””””””””””””””””””””””””””” no campo


de busca, o vba retornará um erro em tempo de execução. A função
Replace simplesmente ignora caracteres do tipo, evitando que ocorra
erros de consulta.

Pesquisa VBA – Realizar Busca Por Mais


De Uma Coluna

No access não é possível usar instruções do tipo:

rs.Open "Select * from TBDados where Nome,Idade,Sexo like'" & Replace(vBusca, "'", "''") &

"%'", db, 3, 3

ou

rs.Open "Select * from TBDados where Nome and idade and sexo like'" & Replace(vBusca, "'",

"''") & "%'", db, 3, 3

Seguindo nosso exemplo, o comando para buscar dados por mais de


uma coluna na tabela é:
rs.Open "Select * from TBDados where Nome like'" & Replace(vBusca, "'", "''") & "%'" & _

"or Idade like '" & Replace(vBusca, "'", "''") & "%'" & " or Sexo like '" & Replace(vBusca,

"'", "''") & "%'", db, 3, 3

Pesquisa VBA – Realizar Busca Por Datas


Da Tabela Access

Para buscar registros através de datas no access, geralmente usamos


o operador BETWEEN. Esse operador é usado quando precisamos
recuperar as linhas de uma tabela cujo valor de um campo encontra-se
em um intervalo especificado.

Esse tipo de consulta é muito comum quando queremos filtrar os


dados por intervalos de datas, por exemplo, para retornar os registros
de um determinado período. Sua sintaxe é a seguinte:

rs.Open " Select * from TBDados where DataCadastro BETWEEN #" & _
Format(vData1, "mm/dd/yyyy") & "# AND #" & _

Format(vData2, "mm/dd/yyyy") & "#", db, 3, 3

Outra forma muito comum de consulta por datas é a de critérios, por


exemplo. Existe momentos que precisamos saber se uma data é maior
> ou menor < que um determinado critério, nesse caso vamos fazer:

rs.Open " Select * from TBDados where DateValue(DataCadastro) <" & vData , db , 3 , 3

rs.Open " Select * from TBDados where DateValue(DataCadastro) >" & vData , db , 3 , 3

rs.Open " Select * from TBDados where DateValue(DataCadastro) =" & vData , db , 3 , 3

rs.Open " Select * from TBDados where DateValue(DataCadastro) <=" & vData , db , 3 , 3

rs.Open " Select * from TBDados where DateValue(DataCadastro) =>" & vData , db , 3 , 3
rs.Open " Select * from TBDados where DateValue(DataCadastro) <>" & vData , db , 3 , 3

Pesquisa VBA – Conclusão Geral Sobre


Buscas No Access

Existe várias formas de pesquisar por registros no access com SQL,


listei para você apenas algumas delas. Mas se você quiser se
aprofundar sobre o assunto, recomendo que você leia esse artigo aqui.

Agora você poderá fazer consultas em uma tabela do access usando o


vba. Espero que você tenha entendido o básico de consultas sql +
access, para ajudar nos estudos deixarei o arquivo desse projeto para
você fazer o download.

Se esse artigo foi útil para você não esqueça de deixar seu comentário
aqui em baixo. Se possível compartilhe esse conteúdo com outras
pessoas, além de ajudar nosso canal você ajudará outras pessoas.

Clique aqui para baixar o arquivo completo

Até mais!
https://diarioexcel.com.br/pesquisa-vba-no-access/

Você também pode gostar