COMO PESQUISAR POR 2 CRITÉRIOS NO BANCO DE DADOS

WELISSON 14/06/2017 20:11:19
#474521
Olá amigos, estou feliz por me aceitarem no forum!

Antes de continuar, quero dizer que ja tentei de todas as formas fazer isso
mas não estou conseguindo, alguem poderia me ajudar?

Eu tenho uma tabela no access com registros de compras dos meus
clientes, dentro desse banco existe o nome do produto que o cliente
comprou e também o código do registro desse cliente...

Exemplo:

Cliente Produto RegistroCliente
Bruna Bone 1
Pedro Bone 2
Bruna Bone 1
Pedro Bone 2
Bruna Bone 1
Pedro Bone 2

Com esse código eu consigo puxar todos as compras do cliente
e jogar em um historico de compras (SEPARADO):

ConectDB
rs.Open [Ô]select * from TBVendas Where CodRegistroCliente Like[ô][Ô] & Replace(CodCliente, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & _
[Ô]%[ô] Order by Codigo[Ô], db, 3, 3

Do Until rs.EOF
Set item = frmClientes.ListHistoricoCompras.ListItems.Add(, , [Ô][Ô] & rs!Codigo)
item.SubItems(1) = [Ô][Ô] & rs!Comprador
item.SubItems(2) = [Ô][Ô] & rs!Produto
item.SubItems(3) = [Ô][Ô] & rs!NF
item.SubItems(4) = [Ô][Ô] & rs!DataCompra
item.SubItems(5) = [Ô][Ô] & rs!DataVencimento
item.SubItems(6) = [Ô][Ô] & rs!TipoPagmento
item.SubItems(7) = [Ô][Ô] & rs!Valor
item.SubItems(8) = [Ô][Ô] & rs!Dividido
item.SubItems(9) = [Ô][Ô] & rs!ParcelasDe
item.SubItems(10) = [Ô][Ô] & rs!StatusVenda
rs.MoveNext
Loop
FechaDB

Nesse caso eu tenho uma variável que guarda o registro do cliente (CodCliente), atravez dela
eu consigo retornar as compras do cliente em especifico...

Ou seja:

Se na minha váriavel tiver o (registro 2), na tabela vendas ele ira retorna todas as compras
do Pedro (exemplo), ate ai blz ok?

Mas se eu quiser fazer uma pesquisa pelo produto comprado da seguinte forma:

Dentro do form eu tenho uma txtPesquisaProduto, onde ao digitar o nome do produto
o sistema precisa ir na tabela onde tem todos os registros dos clientes, porem so
retorna o produto que o (Pedro Comprou).

Mas nesse caso eu tenho que fazer uma consulta por dois critérios, ficando tipo assim:

ConectDB
rs.Open [Ô]select * from TBVendas Where RegistroCliente Like[ô][Ô] & Replace(CodCliente, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & _
[Ô]%[ô] & Produto Like[ô][Ô] & Replace(txtPesquisaProduto.text, [Ô][ô][Ô], [Ô][ô][ô][Ô][Ô], db, 3, 3

Ou seja:

Retorne para mim da tabela VENDAS todos as COMPRAS de BONE onde o Registro do cliente
for igual a CodCliente

Preciso disso porque posso vender o Bone(exemplo) tanto para o Pedro como para Bruna, mas a
diferença vai estar no código do cliente...

é possive l?
KERPLUNK 14/06/2017 20:35:02
#474523
Resposta escolhida
Ah, que bom se todo mundo postasse assim... a maioria quer a coisa prontinha, digita uma frase e quer tudo na mão! Parabéns por estar na contramão disso!
Você está no caminho certo! Para fazer buscas com múltiplos critérios(que é o que você quer), você precisa usar o operador [Ô]AND[Ô], para quando quer combinar os dois critérios, ou [Ô]OR[Ô] para fazer a pesquisa, por um ou por outro, ficando assim:

rs.Open [Ô]select * from TBVendas Where RegistroCliente Like[ô][Ô] & Replace(CodCliente, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & _
[Ô]%[ô] AND Produto Like[ô][Ô] & Replace(txtPesquisaProduto.text, [Ô][ô][Ô], [Ô][ô][ô][Ô][Ô], db, 3, 3
KERPLUNK 14/06/2017 22:15:49
#474525
Só um adendo, por [Ô]maioria[Ô], me refiro à usuários novos. Criam a conta, fazem o pedido(nem ao menos é um esclarecimento, é um pedido mesmo), esperam a resposta(que deve estar prontinha, só copiar e colar, senão simplesmente posta [Ô]não deu[Ô] e o erro). E quando resolve, nem sequer voltam para fechar o tópico.
WELISSON 15/06/2017 01:56:28
#474531
Citação:

:
Ah, que bom se todo mundo postasse assim... a maioria quer a coisa prontinha, digita uma frase e quer tudo na mão! Parabéns por estar na contramão disso!
Você está no caminho certo! Para fazer buscas com múltiplos critérios(que é o que você quer), você precisa usar o operador [Ô]AND[Ô], para quando quer combinar os dois critérios, ou [Ô]OR[Ô] para fazer a pesquisa, por um ou por outro, ficando assim:


rs.Open [Ô]select * from TBVendas Where RegistroCliente Like[ô][Ô] & Replace(CodCliente, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & _
[Ô]%[ô] AND Produto Like[ô][Ô] & Replace(txtPesquisaProduto.text, [Ô][ô][Ô], [Ô][ô][ô][Ô][Ô], db, 3, 3



KERPLUNK, Muito obrigado!

Eu pesquiso muito antes de entrar em contato, só quando não dar mesmo que procuro alguem mais cranio
é justamente nesse ponto que tenho duvida, não sei trabalhar com esse tipo de pesquisa em LIKE, parece
que estou escrevendo algo errado, sempre da erro de operador faltando...

Analisando a lógica, acredito que estou no caminho serto Veja, tentei assim:

Citação:

Sub FiltraProdutoComprado()
ConectDB
rs.Open [Ô]Select * from TBVendas where [txt-color=#0000f0]Produto[/txt-color] like[ô][Ô] & frmClientes.txtbuscaProdutos.Text & [Ô]%[ô][Ô] And [txt-color=#0000f0]CodRegistroCliente[/txt-color] = [Ô] CodCliente, db, 3, 3[Ô]
Dim item As ListItem
Do Until rs.EOF
Set item = frmClientes.ListHistoricoCompras.ListItems.Add(, , [Ô][Ô] & rs!Codigo)
item.SubItems(1) = [Ô][Ô] & rs!Comprador
item.SubItems(2) = [Ô][Ô] & rs!Produto
item.SubItems(3) = [Ô][Ô] & rs!NF
item.SubItems(4) = [Ô][Ô] & rs!DataCompra
item.SubItems(5) = [Ô][Ô] & rs!DataVencimento
item.SubItems(6) = [Ô][Ô] & rs!TipoPagmento
item.SubItems(7) = [Ô][Ô] & rs!Valor
item.SubItems(8) = [Ô][Ô] & rs!Dividido
item.SubItems(9) = [Ô][Ô] & rs!ParcelasDe
item.SubItems(10) = [Ô][Ô] & rs!StatusVenda
rs.MoveNext
Loop

FechaDB
Call DefineClienteAtivo
End Sub

é exatamente isso que estou precisando, porem meu campo CodRegistroCliente que é á coluna da minha tabela
esta retornando em empty, tenho em mente que ele deveria estar no comesso não?

Porem sem ter a lógica do comando estar bem complicado!


OMAR2011 15/06/2017 10:46:45
#474537
O que você tem que fazer é fechar seu tópico e abri no VB/VBA.
Este seu é VBnet.
Para mim,acho melhor fechar o Banco somente ao encerrar o formulário.
NICKOSOFT 15/06/2017 13:22:29
#474539
rs.Open [Ô]Select * from TBVendas where Produto like[ô][Ô] & frmClientes.txtbuscaProdutos.Text & [Ô]%[ô][Ô] And CodRegistroCliente = [Ô] CodCliente, db, 3, 3[Ô]

preste atenção nas aspas duplas e simples......

rs.Open [Ô]Select * from TBVendas where Produto like [ô] [Ô] & frmClientes.txtbuscaProdutos.Text & [Ô]%[ô] And CodRegistroCliente = [Ô] & CodCliente, db, 3, 3
acredito q esteja completo assim.....
Tópico encerrado , respostas não são mais permitidas