Notifications
Clear all

Erro Sintaxe de Recordset (ADO)

2 Posts
1 Usuários
0 Reactions
1,212 Visualizações
(@heliofaria)
Posts: 50
Trusted Member
Topic starter
 

Olá pessoal,tudo em paz?

Estou com um problema há 2 dias e não consigo resolver. A parada é o seguinte:

Tenho um userform que contém um Textbox e uma listview alimentada por um banco em Access. Uso o textbox para dizer os nomes dos produtos que quero que apareça na listview, e é aí que está o problema: meu recordset está puxando apenas as referências exatas, ou seja, ele so carrega os produtos cujo os nomes estão exatamente iguais está na base. Meu desejo é que ele retorne os produtos conforme vou digitando as letras dos nomes. Exemplo: Se digito a letra "L", deve aparecer os itens que contém a letra "L",como "Lapiseira", "Lápis"... e a medida que vou completando a palavra, os demais que não contem os caracteres digitados, desaparecem do listview. Usei como modelo um recordset de um amigo "Renam Ruthes", porém ele programou em DAO. Como meu código está todo em ADO, precisava encontrar uma solução para isso. Acredito que seja apenas um equivoco na sintaxe do recordset, quando uso o "*" para "pegar" as letras inseridas conforme vou digitando.

Obs: To mandando o exemplo em anexo para ajudar. Nele tem um print desse código em DAO a título de curiosidade.

 
Postado : 05/09/2016 8:42 am
(@heliofaria)
Posts: 50
Trusted Member
Topic starter
 

Pessoal, depois de um longo fim de semana e algumas horas buscando essa resposta, fui garimpar uma solução nos foruns de SQL e achei essa pérola aqui: (%).

Como já era de se esperar, o problema todo estava na sintaxe do recordset. Enquanto o DAO usa o " * " para retornar os resultados "aproximados", o ADO usa o " % " para realizar a mesma função.

Sendo assim o código correto ficou:

Rst.Open "SELECT * FROM Bd_Produtos Where Nome like '%" & Texto_pesquisa & "%' ", Conexao, adOpenKeyset, adLockOptimistic, adCmdText

Espero que sirva de auxílio para quem está sofrendo com adaptações entre DAO- ADO.kkkkk

Até mais!

 
Postado : 07/09/2016 6:36 am