BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Access.- VBA.

quilloquepasa

Hola chicos.

Necesito originar búsquedas o filtros de registros mediante cadena de texto introducida en un cuadro de texto, de tal forma que me devuelva los registros filtrados conforme presione una tecla cada vez. Para ello en el evento KeyPress de dicho cuadro de texto creo una variable donde almacenar el texto escrito y la concateno para el filtro siguiente. El filtrado lo realiza correctamente, pero me encuentro con el problema de que los caracteres no se mantienen todos visibles en el cuadro de texto -tan sólo se muestra el último escrito-. Ahora no ando muy inspirado, así que necesito un cable caritativo, por favor.

-------------------------------------------------------------

Código:

Private Sub cuadrodetexto_KeyPress(KeyAscii As Integer)

Dim texto As String

texto = cuadrodetexto.Text

cuadrodetexto = cuadrodetexto & texto

Form.RecordSource = "Select tabla from campo"

End Sub

--------------------------------------------------------------

Nota: Entiendo que lo ejecuto en el evento correcto o por el contrario ¿Debo realizarlo en otro evento?

Además he de crear una excepción para permitir que la tecla "delete" me borre un carácter, pero no tengo la más remota idea de cómo solventar esa cuestión.

Gracias.

BocaDePez

Porque pones esta linea? cuadrodetexto = cuadrodetexto & texto

No se supone que si es un cadro de texto el "cuadrodetexto" ya lo mantiene todo lo que tecleas?, o no es un TEXT BOX?

🗨️ 10
quilloquepasa

Sí, es un cuadro de texto, pero he de concatenar para que me filtre cada vez la suma de todos los caracteres que vaya escribiendo, de lo contrario, al ejecutarse en el evento keyPress, sólo me filtraría por el último carácter escrito.

🗨️ 8
BocaDePez

A ver,

si tu haces un:

variabletexto = cajatexto.text

No hace falta que luego hagas una concatenación, ya que lo que has tecleado ya esta en la caja de texto.

Para que filtre por el ultimo caracter esrcito es la variable pasada a la función KEYASCII que no la estas usando, asi que no tiene porque filtrarte por el ultimo caracter si no concatenas.

🗨️ 7
quilloquepasa

Que va picha, ya te digo que en ese evento -KeyPress- cada vez que se presiona una tecla realiza el filtro y borra todo el contenido del cuadro de texto, de tal manera que lo efectúa sobre el último carácter escrito. Otra cosa es que ejecutes el código en el evento "Después de actualizar" AfterUpdate-, por ejemplo. Entonces sí que no hace falta concatenar ni siquiera crear la variable "texto".

Pero bueno, si tienes la solución, dímela picha.

Gracias. :-)

🗨️ 6
BocaDePez
BocaDePez
🗨️ 5
BocaDePez
BocaDePez
🗨️ 3
BocaDePez
BocaDePez
🗨️ 1
quilloquepasa

Al ejecutarse en ese evento no es necesario presionar la tecla "enter" para realizar el filtro.

Gracias.