boas tardes
criei um form com uma caixa de texto e uma caixa de listagem.
quando pesquiso na caixa de texto, automaticamente a caixa de listagem fica preenchida.
mas so consigo fazer pesquisa por 1 parâmetro e tinha interesse em fazer por pelo menos 4.
o codigo esta a pesquisar pelo campo marcaint, mas eu pretendia pesquisar pelo marcaint, marcaint1, marcaint2, marcaint3,
tudo na mesma caixa de texto.
exemplo
1 Marcaint=rui ; Marcaint1= paulo ; Marcaint2=carlos ; Marcaint3= eduardo
2 Marcaint=antonio ; Marcaint1= marquez ; Marcaint2=afonso ; Marcaint3= jorge
3 Marcaint=manuel ; Marcaint1= tiago ; Marcaint2=cardoso ; Marcaint3= manuel
4 Marcaint=carlos ; Marcaint1= luisa ; Marcaint2=chico ; Marcaint3= tino
5 Marcaint=edna ; Marcaint1= emilia ; Marcaint2=rui ; Marcaint3= paulo
6 Marcaint=maria ; Marcaint1= isabel ; Marcaint2=sara ; Marcaint3= rui
7 Marcaint=andreia ; Marcaint1= rui ; Marcaint2=carolina ; Marcaint3= eduardo
8 Marcaint=gabi ; Marcaint1= carlos ; Marcaint2=teixeira ; Marcaint3= salvio
9 Marcaint=rui ; Marcaint1= paulo ; Marcaint2=sousa ; Marcaint3= joca
seu na caixa de texto colocar rui, a caixa de listagem tem que dar retorno dos processos 1 , 5 , 6 , 9.
o codigo que estou a usar é:
Private Sub txtPesquisa_Change()
Dim strSQL As String
On Error GoTo Rs_Fechado
Pesquisa:
mValor = txtPesquisa.Text
If Len(mValor & "") = 0 _
Or Asc(mValor) = 32 Then 'Limpa espaços também.
Call cmdLimpar_Click
Exit Sub
End If
'Na primeira vez, a rotina desviará para o rótulo
'Rs_Fechado, pois o Recordset ainda não foi aberto.
'Na 2ª vez em diante, a rotina prossegue normalmente.
With rs
.Filter = "MARCAint Like '*" & adhHandleQuotes(mValor, "'") & "*'"
Set Rs1 = .OpenRecordset
'Move para último p/ fazer contagem na função PreencheLista
If Rs1.RecordCount <> 0 Then Rs1.MoveLast
lstRetorno.Requery
End With
Fim:
Exit Sub
Rs_Fechado:
Select Case Err
Case 91, 3420 'Ocorre só na primeira vez em que é pesquisado um item.
strSQL = "SELECT Nome_Id, Nome, marcaint, modeloint, marcaint1, modeloint1, marcaint2, modeloint2, marcaint3, modeloint3 " _
& "FROM Nome ORDER BY Nome_Id"
'Cria um recordset bem rápido, pois é SnapShot.
Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot)
GoTo Pesquisa
Case 5 'ocorre ao voltar com BackSpace, apagando o texto.
Resume Next
Case Else
MsgBox "Erro nº " & Err & vbCrLf _
& Err.Description, vbCritical, "Erro"
End Select
Resume Fim
End Sub
criei um form com uma caixa de texto e uma caixa de listagem.
quando pesquiso na caixa de texto, automaticamente a caixa de listagem fica preenchida.
mas so consigo fazer pesquisa por 1 parâmetro e tinha interesse em fazer por pelo menos 4.
o codigo esta a pesquisar pelo campo marcaint, mas eu pretendia pesquisar pelo marcaint, marcaint1, marcaint2, marcaint3,
tudo na mesma caixa de texto.
exemplo
1 Marcaint=rui ; Marcaint1= paulo ; Marcaint2=carlos ; Marcaint3= eduardo
2 Marcaint=antonio ; Marcaint1= marquez ; Marcaint2=afonso ; Marcaint3= jorge
3 Marcaint=manuel ; Marcaint1= tiago ; Marcaint2=cardoso ; Marcaint3= manuel
4 Marcaint=carlos ; Marcaint1= luisa ; Marcaint2=chico ; Marcaint3= tino
5 Marcaint=edna ; Marcaint1= emilia ; Marcaint2=rui ; Marcaint3= paulo
6 Marcaint=maria ; Marcaint1= isabel ; Marcaint2=sara ; Marcaint3= rui
7 Marcaint=andreia ; Marcaint1= rui ; Marcaint2=carolina ; Marcaint3= eduardo
8 Marcaint=gabi ; Marcaint1= carlos ; Marcaint2=teixeira ; Marcaint3= salvio
9 Marcaint=rui ; Marcaint1= paulo ; Marcaint2=sousa ; Marcaint3= joca
seu na caixa de texto colocar rui, a caixa de listagem tem que dar retorno dos processos 1 , 5 , 6 , 9.
o codigo que estou a usar é:
Private Sub txtPesquisa_Change()
Dim strSQL As String
On Error GoTo Rs_Fechado
Pesquisa:
mValor = txtPesquisa.Text
If Len(mValor & "") = 0 _
Or Asc(mValor) = 32 Then 'Limpa espaços também.
Call cmdLimpar_Click
Exit Sub
End If
'Na primeira vez, a rotina desviará para o rótulo
'Rs_Fechado, pois o Recordset ainda não foi aberto.
'Na 2ª vez em diante, a rotina prossegue normalmente.
With rs
.Filter = "MARCAint Like '*" & adhHandleQuotes(mValor, "'") & "*'"
Set Rs1 = .OpenRecordset
'Move para último p/ fazer contagem na função PreencheLista
If Rs1.RecordCount <> 0 Then Rs1.MoveLast
lstRetorno.Requery
End With
Fim:
Exit Sub
Rs_Fechado:
Select Case Err
Case 91, 3420 'Ocorre só na primeira vez em que é pesquisado um item.
strSQL = "SELECT Nome_Id, Nome, marcaint, modeloint, marcaint1, modeloint1, marcaint2, modeloint2, marcaint3, modeloint3 " _
& "FROM Nome ORDER BY Nome_Id"
'Cria um recordset bem rápido, pois é SnapShot.
Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot)
GoTo Pesquisa
Case 5 'ocorre ao voltar com BackSpace, apagando o texto.
Resume Next
Case Else
MsgBox "Erro nº " & Err & vbCrLf _
& Err.Description, vbCritical, "Erro"
End Select
Resume Fim
End Sub