PESQUISAR TELEFONE EM MAIS DE UM CAMPO E OUTROS...

EVERSON.PASETTO 16/08/2007 14:18:06
#231199
PESQUISAR TELEFONE EM MAIS DE UM CAMPO COM OUTROS DADOS

Eu tenho para pesquisa apenas um campo de telefone, onde ele pesquisa em 4 campos e me retorna todos os que contenham telefones que começam com 3472, por exemplo....

Mas para eu pesquisar por exemplo apenas os de Canoas, que contenham este telefone em mais campos.... ele me retorna todos os que tem o telefone 3472, ignorando a cidade....

Isto também acontece, quando eu tento pesquisar por Silva que contenha tal telefone...

Resumendo... a pesquisa do telefone funciona em multiplos campos, mas como faço para adicinoar a pesquisa outros dados... como localizar os que noram na Rua D.Pedro... Bairro Brasilia, e que tenha o telefone que começe por 3472...

Bem, eu posso fazer a pesquisa por telefone isolada, mas quero fazer uma pesquisa mais concreta... entendem...

Bem, abaixo esta o meu codigo... bem nele tambem tem uma explicação + ou - como a de cima... rrsrsrsrs


Citação:

Public Function fCarregaPesqMais() As Boolean
Dim strSQL As String
Dim intformato(13) As Integer

If txtPesqNome.Text <> "" Then
strSQL = strSQL & " cli_nome like '%" & txtPesqNome.Text & "%' and "
End If

If txtPesqEndereco.Text <> "" Then
strSQL = strSQL & " cli_Endereco like '%" & txtPesqEndereco.Text & "%' and "
End If


If txtPesqNumero.Text <> "" Then
strSQL = strSQL & " cli_nro like '%" & txtPesqNumero.Text & "%' and "
End If

If txtPesqAp.Text <> "" Then
strSQL = strSQL & " cli_Ap like '%" & txtPesqAp.Text & "%' and "
End If

If txtPesqBairro.Text <> "" Then
strSQL = strSQL & " cli_Bairro like '%" & txtPesqBairro.Text & "%' and "
End If

If txtPesqCEP.Text <> "" Then
strSQL = strSQL & " cli_CEP like '%" & txtPesqCEP.Text & "%' and "
End If

If txtPesqEstado.Text <> "" Then
strSQL = strSQL & " cli_Estado like '%" & txtPesqEstado.Text & "%' and "
End If

If txtPesqCidade.Text <> "" Then
strSQL = strSQL & " cli_cid_nome like '%" & txtPesqCidade.Text & "%' and "
End If

If txtPesqEmail.Text <> "" Then
strSQL = strSQL & " cli_email like '%" & txtPesqEmail.Text & "%' and "
End If


'Aqui esta dando o erro... caso eu pesquisar por exemplo
'Por Everson que contenha em um dos campos um telefone 777 ele localiza apenas pelo campo do
'Telefone... e me retorna todos os que contem o telefone 777, em qualquer um dos campos....

If txtPesqtelefone.Text <> "" Then
strSQL = strSQL & " cli_telefone like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_telefone2 like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_telefone3 like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_Celular1 like '%" & txtPesqtelefone.Text & "%' and "
End If

'Eu também já usei esta formula no lugar da formula acima e este erro continua...

If txtPesqtelefone1.Text <> "" Then
strSQL = strSQL & " cli_telefone like '%" & txtPesqtelefone1.Text & "%' or " & _
" cli_telefone2 like '%" & txtPesqtelefone1.Text & "%' or " & _
" cli_telefone3 like '%" & txtPesqtelefone1.Text & "%' or " & _
" cli_Celular1 like '%" & txtPesqtelefone1.Text & "%' and "
End If

'Bem o codigo funciona perfeitamante quando eu pesquiso apenas por campos com telefones...
'Mas digamos que eu tenha estes cadastros

'Everson com o telefone 777 no 1º campo e
'Roni como o telefone 777 no segundo campo

'Se eu pesquisar apenas pelo telefone 777 ele me localizará o os dois que tem este telefone...
'Mas caso eu quiser pesquisar apenas o Everson.... ele me localiza o Everson... mas se eu quiser
'Pesquisar o Everson que tenha o telefone 777 em um destes campos... além de ele me mostrar apenas o Everson
' me mostra todos os que tem o telefone 777 em um dos campos...

'Como faço para arrumar esta rotina...

If txtPesqAniversario.Text <> "" Then
strSQL = strSQL & " cli_Aniversario like '%" & txtPesqAniversario.Text & "%' and "
End If

If strSQL <> "" Then
strSQL = " where " & Left(strSQL, Len(strSQL) - 4)
End If


CboEstado.ListIndex = -1
CboCidade.ListIndex = -1
cboNome.Text = ""


strSQL = "select cli_nome,cli_endereco,cli_nro,cli_ap,cli_bairro," & _
"cli_cep,cli_estado,cid_nome,cli_email,cli_telefone," & _
"cli_telefone2,cli_telefone3,cli_celular1,cli_aniversario,cli_nomeuser from cliente as cl left join " & _
"cidades as ci on cl.cli_cidade=ci.cid_codigo " & strSQL & " order by cli_nome "

Call sCarregarListview(LsvCli, strSQL, intformato)
'Call scarregalistaclientes(strsql)

End Function



Obrigado e até +
USUARIO.EXCLUIDOS 16/08/2007 14:22:15
#231202
Resposta escolhida
Amigo,

troque isto aqui:
   If txtPesqtelefone.Text <> "" Then
strSQL = strSQL & " cli_telefone like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_telefone2 like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_telefone3 like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_Celular1 like '%" & txtPesqtelefone.Text & "%' and "
End If




Por isto:

   If txtPesqtelefone.Text <> "" Then
strSQL = strSQL & " (cli_telefone like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_telefone2 like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_telefone3 like '%" & txtPesqtelefone.Text & "%' or "
strSQL = strSQL & " cli_Celular1 like '%" & txtPesqtelefone.Text & "%') and "
End If



A diferença está no uso de Parenteses, faz o teste e posta ae o resultado.
Tópico encerrado , respostas não são mais permitidas