AJUDA COM ALGORITMO DE PESQUISA

FABIANOWALLAXX 10/07/2012 23:38:14
#405828
Oi gente é o seguinte:Numa aplicação vb 6 com banco de dados aqui com dois indíces, código e nome do cliente. Eu quero que o usuário possa digitar tanto código quanto nome para poder fazer a pesquisa.Mas eu sei fazer só com o índice código.Preciso da ajuda de alguém pro usuário poder digitar na InputBx tanto o nome como o código e achar o q procura.Bom, eu fiz assim:
Fiz um botão [Ô]Consulta[Ô] desse jeito

Private Sub cmdConsultar_Click()
Dim valorpesquisa As String

valorpesquisa = InputBox([Ô]Digite o códigoou o nome do cliente para encontrar[Ô])
DadosClientes.Recordset.FindFirst [Ô]Codigo=[Ô] & Val(valorpesquisa)
If DadosClientes.Recordset.NoMatch = True Then
MsgBox [Ô]Este Registro não foi encontrado no Banco de Dados![Ô]
End If

End Sub


Desse jeito ele só procura pelo número do código.
O que eu faço então pro aplicativo procurar pelo indice [Ô]Codigo[Ô] e pelo indice [Ô]Nome[Ô] ao mesmo tempo?

Desde já agradeço.
OMAR2011 11/07/2012 08:49:33
#405836
Use está condição,dentro dela coloque sua pesquisa. Daoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo?

Dim x As String, valorpesquisa As String
x = MsgBox([Ô]Se deseja consultar registro por código,clica em SIM caso contário NÂO.[Ô], 36, [Ô]Aviso[Ô])
If x = 6 Then [ô]se na variável x esta armazenado (6) que significa que o usuário apertou o botão sim
valorpesquisa = InputBox([Ô]Digite o código do cliente para encontrar[Ô])
Else
valorpesquisa = InputBox([Ô]Digite o Nome do cliente para encontrar[Ô])
End If
é um jeito
Dao cara,mude para melhor.
FFCOUTO 11/07/2012 09:38:59
#405839
Resposta escolhida
Basta verificar se o que o usuário digitou é numérico ou não e fazer a condição


Private Sub cmdConsultar_Click()
Dim valorpesquisa As String

valorpesquisa = InputBox([Ô]Digite o códigoou o nome do cliente para encontrar[Ô])

If IsNumeric(valorpesquisa) Then
DadosClientes.Recordset.FindFirst [Ô]Codigo=[Ô] & CLng(valorpesquisa)
Else
[ô]Se desejar a pesquisa por parte do nome descomente a linha abaixo e comente a linha posterior
[ô]DadosClientes.Recordset.FindFirs [Ô]Nome LIKE *[ô][Ô] & valorpesquisa & [Ô]*[ô][Ô]
DadosClientes.Recordset.FindFirs [Ô]Nome = [ô][Ô] & valorpesquisa & [Ô][ô][Ô]
Endif

If DadosClientes.Recordset.NoMatch = True Then
MsgBox [Ô]Este Registro não foi encontrado no Banco de Dados![Ô]
End If
End Sub


FABIANOWALLAXX 11/07/2012 22:18:10
#405894
ta certo isso aqui:
[ô]DadosClientes.Recordset.FindFirs [Ô]Nome LIKE *[ô][Ô] & valorpesquisa & [Ô]*[ô][Ô] ?

Coloquei e olha os erros que aparecem

syntax error(missing operator) in expression
FFCOUTO 11/07/2012 22:50:43
#405895
Rapaz. faltou um T no findfirst

[ô]DadosClientes.Recordset.FindFirst [Ô]Nome LIKE [ô]*[Ô] & valorpesquisa & [Ô]*[ô][Ô] ?

Se com o * não funcionar. Troque por %
OMAR2011 11/07/2012 22:58:36
#405898
A melhor forma de fazer isto é não usar o objeto DATACONTROL.
Você obtém resultado satisfatório e compreende o que acontece.
Escrever o código acho bem melhor.
FABIANOWALLAXX 11/07/2012 23:01:03
#405899
troquei por % e deu certo.Obrigado.Vou fechar o tópico
Tópico encerrado , respostas não são mais permitidas