Access inicio | | | | | |
Olá,
Seja Bem Vindo ao Blog.

Conecte-se ou registre-se e utilize gratuitamente este equipamento, temos exemplos referente a criação de banco de dados e desenvolvimento de softwares e programas utilizando o Microsoft Access.


Administração do Blog AccessDoProgramador.

Pesquisar Filtrar formulário continuo Access populando o RecordSouce por VBA

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

27022017

Mensagem 

Pesquisar Filtrar formulário continuo Access populando o RecordSouce por VBA






Você tem (por exemplo) uma tabela Cliente e outra Vendas. Você decide criar um subformulário do tipo continuo e quer pesquisar os registros de cada venda pela chave primária do cadastro do cliente no evento ao alterar de uma textBox localizada no cabeçalho do formulário.

O código abaixo permite que você selecione todas as vendas que satisfaça o nome ou parte do nome do cliente que digitou numa TextBox que assuma o nome de txtPesquisa.
No evento ao alterar da TextBox:

Dim SQL As String
SQL = "SELECT * " _
       & "FROM SuaTabelaCliente " _
       & "LEFT JOIN " _
       & "SuaTabelaVendas " _
       & "ON " _
       & "SuaTabelaCliente.IdChavePri = SuaTabelaVendas.IdChaveEstran " _
       & "WHERE " _
       & "((SuaTabelaCliente.NomeCliente Like '*'+ txtPesquisa.Text & '*')) " _
       & "ORDER BY " _
       & "SuaTabelaCliente.IdChavePri DESC"
Forms!NomeDoForm!NomeDoSubForm.Form.RecordSource = SQL
Forms!NomeDoForm!NomeDoSubForm.Requery


Pode ser que não queira criar subformulário e deseje trabalhar os dados diretamente no formulário continuo, então o código acima sofre variações.
No evento após atualizar da TextBox:

Dim SQL As String
SQL = "SELECT * " _
       & "FROM SuaTabelaCliente " _
       & "LEFT JOIN " _
       & "SuaTabelaVendas " _
       & "ON " _
       & "SuaTabelaCliente.IdChavePri = SuaTabelaVendas.IdChaveEstran " _
       & "WHERE " _
       & "((SuaTabelaCliente.NomeDoCliente " _

       & "Like '*'+ Forms!frmSuaTabelaVendas!txtPesquisa & '*')) " _
       & "ORDER BY " _
       & "SuaTabelaCliente.IdChavePri DESC"
Me.Form.RecordSource = SQL
Me.Requery


Basicamente consiste em montar a instrução SQL e popular a fonte de registro do formulário continuo ou subformulário do tipo continuo.

Você poderia filtrar os nomes independentes se tiverem acentuados. 
Para filtrar José e Jose, use:

Troque isso:
& "((SuaTabelaCliente.NomeCliente Like '*'+ txtPesquisa.Text & '*')) " _

Por isso:
& "((StrConv(SuaTabelaCliente.NomeCliente,2,1049) Like '*'+ StrConv(txtPesquisa.Text,2,1049) & '*') " _


Até!


avatar
Dilson
Facilitador
Facilitador

Brasil


http://www.dadosweb.com

Voltar ao Topo Ir em baixo

- Tópicos similares
Compartilhar este artigo em: BookmarksDiggRedditDel.icio.usGoogleLiveSlashdotNetscapeTechnoratiStumbleUponNewsvineFurlYahoo!Smarking

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum