Gambas3: Ejemplo de autocompletado usando bases de datos
Os dejo aqui un pequeño ejemplo de como hacer un autocompletado de datos mientras se esta rellenando los textbox de un formulario. Se basa en que cada vez que escribo en el textbox, se produce un evento _keypress(), que añade la letra pulsado (key.text) al textbox.
Capturando esa tecla y el contenido del texbox, y pasandola a una consulta de la base de datos, extraido los datos "parecidos" (usando la orden like de SQL), del campo "nombre" de la tabla "personas", y los cargo al listbox.
Código fuente: evento _KeyPress() del textbox
Public
Sub
TextBoxNombre_KeyPress()
'cada
vez que se escriba una letra, carga el contenido del listbox
If
IsLetter(Key.text)
cargalisbox(TextBoxNombre.text
&
Key.Text)
Else
If
Key.code
=
16777219
Then
'pulsado
la tecla de suprimir
cargalisbox(Mid$(TextBoxNombre.text,
1,
Len(TextBoxNombre.text)
-
1))
Endif
Endif
End
Carga de datos en el listbox:
Public
Sub
cargalisbox(texto
As
String)
resultado
=
BaseDAtos.Consulta(texto)
ListBox1.Clear
While
resultado.Available
ListBox1.Add(resultado["nombre"])
resultado.MoveNext
Wend
End
Consulta a la base de dato que devuelve un result:
Public
Sub Consulta(letras
As String) As Result
Dim
$Query
As String
Dim
nombredetabla
As String = "personas"
Dim
nombreDeCampo
As String = "nombre"
$Query
= "SELECT
* FROM "
& nombredetabla
& "
WHERE "
& nombredecampo
& "
like '%"
& letras
& "%'"
$result
= $Con.Exec($Query)
If
Error Then
Message.Error("Problemas
al realizar la consulta")
Else
Return
$result
Endif
End
Aqui teneis un video donde explico el procedimiento:
Enlace de descarga del código completo: alojado en google drive
Saludos
Julio