FILTRAR POR LETRA
Bom dia, alguem saberia me informar como eu faço para filtrar o conteúdo de um tabela no BD por letra ? Por exemplo, no meu form tenho um txtbox aonde eu gostaria de digitar uma letra qualquer e quando fosse efetuado a busca no bd ele me filtrasse todos os nomes de clientes q comecem com aquela letra....Obrigado..
eu faço da seguinte maneira
Private Sub txtFields_Change(Index As Integer)
With rsBank
.Close
.Open "select * from BANCOS where BANCO like('" & "%" & txtFields(0).Text & "%" & "') order by BANCO; "
End With
'
LoadDatas ' à ¨ uma função aonde atualizo o listview controle que uso pra mostrar
End Sub
Private Sub txtFields_Change(Index As Integer)
With rsBank
.Close
.Open "select * from BANCOS where BANCO like('" & "%" & txtFields(0).Text & "%" & "') order by BANCO; "
End With
'
LoadDatas ' à ¨ uma função aonde atualizo o listview controle que uso pra mostrar
End Sub
Tente assim:
Para uma melhor explicação de uma olhada neste link
select * from autor where UPPER(nome_autor) like 'PEDRO%'
Para uma melhor explicação de uma olhada neste link
Mas no caso o like seria usado somente se tivesse relacionamento entre tabelas ?
Esqueci de mencionar que estou usando ado declarado..Não sei se influencia em alguma coisa...
Esqueci de mencionar que estou usando ado declarado..Não sei se influencia em alguma coisa...
?
Estou tentando de tudo que é forma mas não tem jeito, alguém tem outras idéias ? Obrigado
mesmo com a dica q t passei naum esta fazendo ?
Não, vc pode substituir o like por = que daria na mesmo. Neste exemplo
ele vai selecionar da tabela autor todos os nome que comecem com pedro, sendo que este pode ser substituido por uma variavel ou o valor de um textbox.
Para melhorar seria assim:
select * from autor where UPPER(nome_autor) like 'PEDRO%'
ele vai selecionar da tabela autor todos os nome que comecem com pedro, sendo que este pode ser substituido por uma variavel ou o valor de um textbox.
Para melhorar seria assim:
adodc1.recordsource=" select * from autor where UPPER(nome_autor) like 'PEDRO%' "
To fazendo assim:
Set Cnn = New ADODB.Connection
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c: riade\Data\dbase.mdb;Jet OLEDB:Database Password=tmonrsr2308sbnu;"
If AutorizaConsultaTotal = "SIM" Then
Rs.Open "select * from TabClientes where NomeCliente='" & "%" & txtletra.Text & "%" & "' Order By NomeCliente", Cnn
Else
Rs.Open "Select * From TabClientes where NomeCliente like('" & "%" & txtletra.Text & "%" & "')and Consultor='" & UsuarioLogado & "'", Cnn
End If
If Rs.RecordCount > 0 Then
Set DataGrid1.DataSource = Adodc1
DataGrid1.Enabled = True
Adodc1.ConnectionString = Cnn
Adodc1.RecordSource = "Select * From TabClientes where(NomeCliente) like'" & txtletra.Text & "' Order By NomeCliente"
Adodc1.Refresh
Else
MsgBox "Não foi encontrado nenhum nome iniciando com a letra " & txtletra.Text, vbInformation, " Atenção!"
txtletra.Text = ""
txtletra.SetFocus
Exit Sub
End If
End If
Mas ele me informa que não encontrou nehum registro no bd, Todos os registro no bd estão com todas as letras em maiúscula
Set Cnn = New ADODB.Connection
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c: riade\Data\dbase.mdb;Jet OLEDB:Database Password=tmonrsr2308sbnu;"
If AutorizaConsultaTotal = "SIM" Then
Rs.Open "select * from TabClientes where NomeCliente='" & "%" & txtletra.Text & "%" & "' Order By NomeCliente", Cnn
Else
Rs.Open "Select * From TabClientes where NomeCliente like('" & "%" & txtletra.Text & "%" & "')and Consultor='" & UsuarioLogado & "'", Cnn
End If
If Rs.RecordCount > 0 Then
Set DataGrid1.DataSource = Adodc1
DataGrid1.Enabled = True
Adodc1.ConnectionString = Cnn
Adodc1.RecordSource = "Select * From TabClientes where(NomeCliente) like'" & txtletra.Text & "' Order By NomeCliente"
Adodc1.Refresh
Else
MsgBox "Não foi encontrado nenhum nome iniciando com a letra " & txtletra.Text, vbInformation, " Atenção!"
txtletra.Text = ""
txtletra.SetFocus
Exit Sub
End If
End If
Mas ele me informa que não encontrou nehum registro no bd, Todos os registro no bd estão com todas as letras em maiúscula
Set Cnn = New ADODB.Connection
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c: riade\Data\dbase.mdb;Jet OLEDB:Database Password=tmonrsr2308sbnu;"
If AutorizaConsultaTotal = "SIM" Then
Rs.Open "select * from TabClientes where UPPER(NomeCliente)='" & "%" & txtletra.Text & "%" & "' Order By NomeCliente", Cnn
Else
Rs.Open "Select * From TabClientes where UPPER(NomeCliente) like('" & "%" & txtletra.Text & "%" & "')and Consultor='" & UsuarioLogado & "'", Cnn
End If
If Rs.RecordCount > 0 Then
Set DataGrid1.DataSource = Adodc1
DataGrid1.Enabled = True
Adodc1.ConnectionString = Cnn
Adodc1.RecordSource = "Select * From TabClientes where(UPPER(NomeCliente)) like'" & txtletra.Text & "' Order By NomeCliente"
Adodc1.Refresh
Else
MsgBox "Não foi encontrado nenhum nome iniciando com a letra " & txtletra.Text, vbInformation, " Atenção!"
txtletra.Text = ""
txtletra.SetFocus
Exit Sub
End If
End If
Se o restante estiver correto ficaria assim colocando o UPPER antes do nome do campo
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c: riade\Data\dbase.mdb;Jet OLEDB:Database Password=tmonrsr2308sbnu;"
If AutorizaConsultaTotal = "SIM" Then
Rs.Open "select * from TabClientes where UPPER(NomeCliente)='" & "%" & txtletra.Text & "%" & "' Order By NomeCliente", Cnn
Else
Rs.Open "Select * From TabClientes where UPPER(NomeCliente) like('" & "%" & txtletra.Text & "%" & "')and Consultor='" & UsuarioLogado & "'", Cnn
End If
If Rs.RecordCount > 0 Then
Set DataGrid1.DataSource = Adodc1
DataGrid1.Enabled = True
Adodc1.ConnectionString = Cnn
Adodc1.RecordSource = "Select * From TabClientes where(UPPER(NomeCliente)) like'" & txtletra.Text & "' Order By NomeCliente"
Adodc1.Refresh
Else
MsgBox "Não foi encontrado nenhum nome iniciando com a letra " & txtletra.Text, vbInformation, " Atenção!"
txtletra.Text = ""
txtletra.SetFocus
Exit Sub
End If
End If
Se o restante estiver correto ficaria assim colocando o UPPER antes do nome do campo
Mesmo assim não funcionou...Putz..à ¨ uma droga mesmo..
Tópico encerrado , respostas não são mais permitidas