CONSULTA COM AUTO COMPLETAR

ERLANMG 21/01/2011 11:01:35
#362936
Caros Colegas,

Tenho um sistema em vb com bd em MySql.

Preciso usar uma consultar onde o usuario digita em uma ComboBox as iniciais por exemplo de um produto e tecla enter, após este evento o sistema carrega o combo com todos os itens iniciados com as letras que o usuario digitou e ja aparece na combobox o primeiro registo.

Já uso como segue abaixo, mas para usar tenho que carregar todos os registros no combobox e medida que o usuario vai digitando ele vai auto completando. Mas terei que mudar pois meu cliente vai começou a usar acesso ao bd via internet e com isso fica muito lento carregar todos os registros na combobox por isso quero filtrar os resultados.

Caso não tenham entendido minha dúvida favor postar.

Public Function Combo_AutoCompletar(xCombo As ComboBox, ByVal xKeyAscii As Long, Optional ByVal xUpperCase As Boolean = True) As Long
Dim lngFind As Long, intPos As Long, intLength As Long, tStr As String
With xCombo
If xKeyAscii = 8 Then
If .SelStart = 0 Then _
Exit Function
.SelStart = .SelStart - 1
.SelLength = Len(.Text)
.SelText = vbNullString
Else
intPos = .SelStart
tStr = .Text
.SelText = IIf(xUpperCase, _
UCase$(Chr$(xKeyAscii)), _
LCase$(Chr$(xKeyAscii)))
End If
lngFind = SendMessage(.hWnd, CB_FINDSTRING, 0, ByVal .Text)
If lngFind = -1 Then
.Text = tStr
.SelStart = intPos
.SelLength = (Len(.Text) - intPos)
Combo_AutoCompletar = xKeyAscii
Else
intPos = .SelStart
intLength = Len(.List(lngFind)) - Len(.Text)
.SelText = .SelText & Right$(.List(lngFind), intLength)
.SelStart = intPos
.SelLength = intLength
End If
End With
End Function

Private Sub text3_KeyPress(KeyAscii As Integer)
KeyAscii = Combo_AutoCompletar(text3, KeyAscii)
End Sub
TECLA 21/01/2011 14:02:58
#362966
Resposta escolhida
Citação:

ERLANMG:
Já uso como segue abaixo, mas para usar tenho que carregar todos os registros no combobox e medida que o usuario vai digitando ele vai auto completando. Mas terei que mudar pois meu cliente vai começou a usar acesso ao bd via internet e com isso fica muito lento carregar todos os registros na combobox por isso quero filtrar os resultados.



Usar uma rotina que complete automaticamente, cuja base esteja remota, creio não ser uma boa solução.

Pergunto:
Porque não continuar usando a pesquisa após uma confirmação (ENTER, por exemplo) com base em uma quantidade específica de caracteres de entrada?
Tópico encerrado , respostas não são mais permitidas