Filtro en tiempo real desde un cuadro de texto en formulario de access

Trato de realizar un filtro en tiempo real, que al escribir empiece a filtrar automáticamente y al borrar los quite.

Mi formulario tiene los siguientes campos:

Code, cant, precio

El filtro debería ser en el campo code.

Aquí les dejo un código que no pude hacer funcionar:

Private Sub txtFiltro_Change() 
Dim vTexto As String 
vTexto = Nz(Me.txtFiltro.Text, "") 
If vTexto = "" Then 
Me.FilterOn = False 
Else With Me 
.Filter = "[Nombre] LIKE '*" & vTexto & "*'" 
.FilterOn = True 
.txtFiltro.SetFocus 
.txtFiltro.SelStart = Len(vTexto) 
End With 
End If 
End Sub

el mismo que esta en una respuesta anterior Aqui, el cual quedo agradecido por la para persona que respondió.

Espero puedan ayudarme con esto, en todo caso enviarme un adjunto.

2 respuestas

Respuesta
1

Yo lo que hago es dar el origen del formulario en la acción Al Cambiar del cuadro de texto:

forms!nombreDelFormulario.RecordSource="select code, cant, precio from nombreDeLaTabla where [Nombre] LIKE '" & form!txtFiltro.value & "*'"

Es decir, iría filtrando por lo que empieza por el valor del cuadro de texto.

Me cuentas.

Gracias por tu respuesta.... pero puedes por favor explicarme un poco mas despacio.. jejejej... por favor...

gracias,,,

En cuanto pueda, te mando el ejemplo

ok, estimada amiga, espero tu ejemplo, me quedo muy agradeció por tu ayuda.

Has mirado algo de lo que te dije de la página, es que va a ser muy parecido.

Como hasta el domingo no voy a tener el ordenador con internet, te explico como lo he hecho, espero que te soluccione.

Una tabla que llamo Códigos con los campos cod, cant y precio

Un formulario en modo tabla o tabular basado en la tabla Códigos, con los campos cod, cant y precio, quiero filtrar por el campo cod.

Inserto un cuadro de texto independiente que llamo txtFiltro, en las propiedades de este cuadro de texto, en la acción Al cambiar de este cuadro de texto ---> procedimiento de evento ---> picas en el cuadrado de la derecha, el de los ... Para abrir el generador de código para escribirlo.

El código sería:

Private Sub txtFiltro_Change()

me.refresh

form.recordsource="select cod, cant, precio from códigos where cod like '" & form!txtfiltro.value & "*'"

Me. Refresh

form! Txtfiltro. Setfocus

form!txtfiltro.selstart=len(form!txtfiltro.text)

end sub

Te explico:

Actualizo el formulario para tomar el valor del cuadro de texto

Doy el origen del registro (recordsource) del formulario filtrando por el empiece del valor del cuadro de texto

Actualizo para que se ejecute la consulta

Devuelvo el foco al cuadro de, texto (setfocus)

Pongo el cursor al final del texto para seguir escribiendo (con selstar damos la intentar, como en este caso la posición sería al final del texto lo igualaremos a la longitud de este.

Espero que te sirva, sino el domingo te lo mandaría por correo.

Respuesta
1

Ya se que esto es un pelín antiguo, pero me di cuenta ahora que lo usé.

¿Habéis observado que cuando la aplicación del filtro deja el formulario sin registros no funciona el setfocus? Aparentemente si pero cuando vamos a colocarnos en el ultimo carácter, da un error en tiempo real diciendo que no podemos usar la propiedad en controles que no tienen el foco.

¿Se os ocurre alguna solución?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas