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/