¿Cómo hacer un buscador automático en access?

Tengo el siguiente código, el cual realiza la búsqueda luego de teclear alguna palabra o parte de ella y oprimir un botón.

Private Sub Form_Load()
DoCmd. GoToRecord,, acNewRec
Me. TxtBuscar. SetFocus 'Esto lleva el foco al control TxtBuscar.
End Sub
Private Sub CmdBuscar_Click()
Dim sql As String
If IsNull(TxtBuscar.Value) Or TxtBuscar.Value = "" Then
    MsgBox "Incluya un tema a buscar", vbInformation, "Buscar"
    Me.TxtBuscar.SetFocus
Else
    Lista2.RowSource = "SELECT Temarios FROM 03INDICE_TEMATICO WHERE Temarios LIKE '*" & TxtBuscar.Value & "*'"
End If
End Sub

Necesito adaptarlo para que al momento de ir escribiendo el cuadro de lista se vaya actualizando automáticamente sin necesidad de oprimir el botón.

He intentado con TxtBuscar y Lista2.Requery pero sin resultados positivos.  

Por favor cualquier ayuda lo agradeceré muchísimo.

Private Sub TxtBuscar_Click()
Dim sql As String
If IsNull(TxtBuscar.Value) Or TxtBuscar.Value = "" Then
    MsgBox "Incluya un tema a buscar", vbInformation, "Buscar"
    Me.TxtBuscar.SetFocus
Else
    Lista2.RowSource = "SELECT Temarios FROM 03INDICE_TEMATICO WHERE Temarios LIKE '*" & TxtBuscar.Value & "*'"
    Lista2.Requery
End If
End Sub

2 Respuestas

Respuesta
1

Tengo una tabla con varios campos, entre ellos el nombre y apellidos. La idea es desde un formulario con un campo de texto independiente, escribir parte de un nombre y con un botón hacer que se arranque una consulta en la que aparezcan los registros de la tabla en la que en el campo nombreyapellidos esté incluido el texto indicado en el formulario de búsqueda.

Muchas gracias

Yo lo haría asi:
* Un formulario independiente con un subformulario con la tabla que contiene los datos
* UN control de cuadro de texto (p.e. txtNombreABuscar)
* Un botón para aplicar el filtro o aplicarlo directamente cada vez que se teclea algo

Se usa la pripiedad Filter y FilterOn en el código, ejemplo:

Me.TuSobformulario.For.Filter = "ElCampo Like '*" & Me.txtNombreABuscar & "*'"
Me.TuSobformulario.For.FilterOn = True

Un ejemplo de una gran amigo mio:
http://www.mvp-access.com/foro/utilidades-filtra-busca-resalta-tipo-sql_topic77949.html

Aqui encontrarás cursos en linea:
http://accessusergroups.org/access-latino/
http://accessusergroups.org/espana/

Respuesta
2

Para que te actualice el cuadro de lista sin necesidad de apretar el botón, tienes que programar el evento "Al cambiar" del cuadro de texto y forzar una actualización del cuadro:

Private Sub TxtBuscar_Change()
    Lista2.RowSource = "SELECT Temarios FROM 03INDICE_TEMATICO WHERE Temarios LIKE '*" & TxtBuscar.Value & "*'"
    Lista2.Requery
End Sub

¡Gracias! 

Corrijo el código, pues había un error:

Private Sub TxtBuscar_Change()
    Lista2.RowSource = "SELECT Temarios FROM 03INDICE_TEMATICO WHERE Temarios LIKE '*" & TxtBuscar.Text & "*'"
    Lista2.Requery
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas