PESQUISA SQL, ENCONTRAR QUALQUER PALAVRA NO CAMPO

BLACKPIC 14/01/2014 16:55:37
#433049
Preciso de uma ajudinha para fazer uma consulta sql que procure em um campo específico a palavra buscada.
Por exemplo:

no banco de dados access existe um campo chamado [Ô]Pedido[Ô], nesse campo podem existir vários itens como [Ô]1-chave de fenda,3-martelo,1-alicate[Ô] ou seja, são os pedidos do cliente.

O que preciso é que no momento que buscar [Ô]alicate[Ô] a pesquisa retorne todos os clientes que compraram alicate.

Estou tentando dessa forma, mas não retorna nada na consulta.

If Text1 <> [Ô][Ô] Then
Data1.Recordset.FindFirst [Ô]Pedido =[ô][Ô] & (Text1.Text) & [Ô][ô][Ô]

If Data1.Recordset.NoMatch = True Then
MsgBox [Ô]NÃO ENCONTRADO[Ô], vbCritical + vbOKOnly, [Ô]Codigo invalido[Ô]
Text1.SetFocus
Exit Sub
Else
Text2.Text = Data1.Recordset([Ô]Cliente[Ô])
Text1.Text = Data1.Recordset([Ô]Pedido[Ô])
Text3.Text = Data1.Recordset([Ô]Data[Ô])
List1.AddItem Text1.Text & Text2.Text & Text3.Text
Exit Sub
End If
End If


Obrigado.
MARCELO.TREZE 14/01/2014 18:31:00
#433062
objeto DataContro colega, num faz isso com gente não e nem com você.

colega faça uma conexao com ado usando query vai ser melhor.


mas seria assim

trocar

 Data1.Recordset.FindFirst [Ô]Pedido =[ô][Ô] & (Text1.Text) & [Ô][ô][Ô]


por

 Data1.RecordSource = [Ô]SELECT * FROM tabela WHERE pedido=[ô][Ô] & (Text1.Text) & [Ô][ô][Ô]


BLACKPIC 15/01/2014 08:27:18
#433069
Obrigado Marcelo, mas ainda não retorna nada. Acabei modificando a consulta, agora está assim:


Data1.RecordSource = [Ô]SELECT * FROM tabela1 WHERE pedido=[ô][Ô] & (Text1.Text) & [Ô]*[ô][Ô]
Data1.Refresh
Do Until Data1.Recordset.EOF
List1.AddItem Data1.Recordset([Ô]pedido[Ô])
Data1.Recordset.MoveNext
Loop

Contudo ainda não está funcionando.
Esse é um código fonte antigo que estou dando uma mexida, tem objeto data aos montes, no momento tenho que acabar usando como está.

MARCELO.TREZE 15/01/2014 08:43:14
#433072
Tire o asterisco (*) da consulta, se você desejar pesquisar por parte da palavra
use o like com %

ex:

Data1.RecordSource = [Ô]SELECT * FROM tabela1 WHERE pedido LIKE [ô][Ô] & (Text1.Text) & [Ô]%[ô][Ô]


porém tente antes o código como postado abaixo

Data1.RecordSource = [Ô]SELECT * FROM tabela1 WHERE pedido=[ô][Ô] & (Text1.Text) & [Ô][ô][Ô]
Data1.Recordset.MoveFirst
Do Until Data1.Recordset.EOF
List1.AddItem Data1.Recordset([Ô]pedido[Ô])
Data1.Recordset.MoveNext
Loop
OMAR2011 15/01/2014 09:01:08
#433075
Deve está usando Access.
Vamos lá.
Não especificou se o campo da tabela [txt-color=#e80000]PEDIDO[/txt-color] é número ou texto.

Para número.
Data1.RecordSource = [Ô]SELECT * FROM tabela1 WHERE pedido=[Ô] & (Text1.Text) & [Ô][Ô]

Para texto.
Data1.RecordSource = [Ô]SELECT * FROM tabela1 WHERE pedido=[ô][Ô] & (Text1.Text) & [Ô][ô][Ô]

Pode ser esse detalhe.
Tente.
Valeu.
OCELOT 15/01/2014 09:10:43
#433078
Resposta escolhida
Sinceramente se você tem um campo texto e nele salvou todos os itens do pedido separados por vírgula e pior ainda, aparentemente com a quantidade junto separado por um traço, então eu diria que você começou muito errado.

A primeiro coisa que você precisa ai é se livrar deste campo e criar uma nova tabela para receber os itens do pedido, afinal se você tem um banco de dados relacional você deve usar ele da forma correta.
RO.DRIGOSG 17/01/2014 16:10:43
#433234
Blackpic,

Se você deseja encontrar a palavra em qualquer lugar do campo, use o LIKE e também com o símbolo de % dos dois lados Textbox, ex:

[Ô]SELECT NOME FROM PESSOAS WHERE NOME LIKE [ô]%[Ô] & Text1.Text & [Ô]%[ô][Ô]
BLACKPIC 20/01/2014 21:27:35
#433300
Estive fora uns dias por isso acabei não respondendo ao tópico. Agradeço a todos que se interessaram em me ajudar até agora.
Como o colega OCELOT falou eu acabei esbarrando em um erro que deveria ter sido analisado antes.
O que está acontecendo é que tenho várias text[ô]s que são agrupadas e mostradas em outra text. Justamente nessa text é que estou tentando fazer a busca. Vou tentar de outro modo.
Obrigado outra vez.

Abraço.




Tópico encerrado , respostas não são mais permitidas