BUSCA EM 2 TB COM CRITÉRIO

JORGESALES 21/04/2016 00:26:21
#461185
Pessoal, boa noite a todos.
Andei um tempo sumido pois estive com problemas de saúde,
enquanto não passo dessa para melhor vou programando para
passar o tempo....
Amigos, o primeiro código abaixo funciona pefeitamente, mas quando
coloco um critério aparece um erro de operador faltando, provavelmente
o parêntese deve estar no lugar errado (eu acho), tentei algumas combinações
mas não deu certo:
rs.Open [Ô]Select * from tbClientes where (Cli_id in (select Id_Cli from tbTelefones))[Ô], db, 3, 3

Esse é com critério e que não funciona:
rs.Open [Ô]Select * from tbClientes where (Cli_id in (select Id_Cli from tbTelefones)) where tel_numero like[ô][Ô] & txtLCelular & [Ô]%[ô][Ô], db, 3, 3

Agradeço desde já a todos que possam ajudar.
JABA 21/04/2016 00:38:01
#461187
Resposta escolhida
Não se pode usar duas clausulas [Ô]Wheres[Ô] soltas desse jeito.

Se o segundo Where faz parte do segundo Select, então faça assim:

rs.Open [Ô]Select * from tbClientes where Cli_id in (select Id_Cli from tbTelefones where tel_numero like [ô] [Ô] & txtLCelular & [Ô]%[ô][Ô]) , db, 3, 3



Se o segundo Where faz parte do primeiro Select, faça assim:

rs.Open [Ô]Select * from tbClientes where (Cli_id in (select Id_Cli from tbTelefones)) And tel_numero like [ô] [Ô] & txtLCelular & [Ô]%[ô][Ô], db, 3, 3
JORGESALES 21/04/2016 00:45:45
#461188
Amigo JABA,
Muito obrigado pela atenção, o segundo where faz parte do segundo Select.
Vou acordar amanhã cedo pra testar, aproveitar o feriado para programar.
Assim que testar postarei o resultado, não testo agora por causa do cansaço.
JORGESALES 21/04/2016 20:59:50
#461205
JABA meu amigo,
obrigado pela ajuda, todavia informo que não funcionou, o cli_id faz parte da primeira tabela, e o
id_cli é a chave estrageira que está na tbTelefones.
O código abaixo aponta para o último parênteses com o erro [Ô]Esperado fim do procedimento[Ô]
rs.Open [Ô]Select * from tbClientes where Cli_id in (select Id_Cli from tbTelefones where tel_numero like [ô] [Ô] & txtLCelular & [Ô]%[ô][Ô]) , db, 3, 3

Mudei o parênteses de lugar na tentativa de corrigir mas não deu certo.
JABA 21/04/2016 21:08:04
#461206
Qual foi o erro gerado?
JORGESALES 21/04/2016 21:33:45
#461207
[Ô]Esperado fim do procedimento[Ô]
JABA 21/04/2016 21:50:39
#461208
O parêntesis ficou fora das aspas, por isso gerou esse erro. Faça assim:

rs.Open [Ô]Select * from tbClientes where Cli_id in (select Id_Cli from tbTelefones where tel_numero like [ô] [Ô] & txtLCelular & [Ô]%[ô] [txt-color=#e80000])[/txt-color][Ô] , db, 3, 3
JORGESALES 21/04/2016 22:00:56
#461209
JABA, muito obrigado por sua ajuda, eu havia colocado dessa forma em meus
testes aqui, o problema é que não importa o valor que fosse colocado na textbox
a consulta sempre retornava vazia.
Daí me veio a ideia de colocar um:
& Replace(txtLCelular, [Ô][ô][Ô], [Ô][Ô]) & [Ô]%[ô] )[Ô], db, 3, 3

e de forma inesplicável ele funcionou

Eu não estava colocando aspas simples na textbox, fiz os testes várias vezes
e só funcionou dessa forma, vou deixar o tópico aberto para ver se alguém tem ideia
do que possa ter acontecido, mas desde já informo que estou muito grato por sua ajuda.
GANDA.NICK 22/04/2016 11:12:59
#461227
Vc deve fazer uma [Ô]consulta parametrizada[Ô] em vez de concatenar o valor da textbox na query....

se vc se der bem com inglês fica aqui um link que explica bem o que estou a falar.
Link: consulta parametrizada
JORGESALES 22/04/2016 18:52:15
#461268
Ganda, obrigado por sua ajuda e pelo prazer que tens em ajudar
os outros, vou estudar sobre o assunto e criar um tópico para pedir
links e coisas do tipo aos amigos.....
Tópico encerrado , respostas não são mais permitidas