PESQUISAR TELEFONE EM MAIS DE UM CAMPO E OUTROS...
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é +
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.