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:

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:

Pesquisa VBA - Pesquisar Dados De Uma Tabela Access img 1

Nesse projeto precisamos incluir uma TextBoxCommandButton 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:

Pesquisa VBA - Pesquisar Dados De Uma Tabela Access img 2

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.

Pesquisa VBA - Pesquisar Dados De Uma Tabela Access gif 1

“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.

Pesquisa VBA - Pesquisar Dados De Uma Tabela Access img 4

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!

Até mais!

Tags:

Sobre o Autor

Welisson Silva
Welisson Silva

Analista de Sistemas, trabalha com TI desde 2014. Especializado em Vendas Online, desenvolvedor, programador, guitarrista e entusiasta de tudo que envolva tecnologia.