Imprimir página | Cerrar ventana

Error en el formulario de búsqueda

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86646
Fecha de impresión: 27/Marzo/2026 a las 06:53


Tema: Error en el formulario de búsqueda
Publicado por: Joseamarq
Asunto: Error en el formulario de búsqueda
Fecha de publicación: 29/Marzo/2023 a las 17:32
Necesito ayuda con el siguiente código. 

Tengo un formulario con un campo de texto que busca en cualquier parte de un subformulario:

Private Sub txtBusquedatrab_AfterUpdate()

          Dim Consultae As String
          
     
        Consultae = "SELECT  TOP 25 [Fecha de creación],[Fecha de modificación],Id_documento,Nombre,apellido_1,apellido_2, alum_cifempresa"
        Consultae = Consultae & " FROM tbl_alumnos"
        Consultae = Consultae & " WHERE (Nombre Like '*" & Me.txtBusquedatrab & "*'"
        Consultae = Consultae & " OR apellido_1 Like '*" & Me.txtBusquedatrab & "*'"
        Consultae = Consultae & " OR apellido_2 Like '*" & Me.txtBusquedatrab & "*')"

        
        Forms![frm_alumnos_general]![frm_lista_alumnos_sinempresa].Form.RecordSource = Consultae
  
End Sub

Private Sub txtBusquedatrab_Change()
                          
        Me.frm_lista_alumnos_sinempresa.SetFocus
        Me.txtBusquedatrab.SetFocus
        Me.txtBusquedatrab.SelStart = 100
             
End Sub



Funciona perfectamente introduciendo cualquier texto menos cuando se introduce "nu"

Que da el siguiente error:

Error 2110
No puede mover el foco al control frm_lista_alumnos_sinempresa


Alguien me puede ayudar?

Gracias y saludos



Respuestas:
Publicado por: pitxiku
Fecha de publicación: 29/Marzo/2023 a las 22:52
Puede ser que ese "nu" no devuelva ningún resultado, por lo que ese subformulario no muestra controles. Y al no haber controles, no puede recibir el foco.

Teniendo en cuenta que primero envías el foco a un formulario, y justo después lo envías a un cuadro de texto, ¿no puedes eliminar/comentar ese envío de foco al formulario?


Publicado por: Joseamarq
Fecha de publicación: 30/Marzo/2023 a las 07:48
Hola pitxiku,

si hay registro para "nu". Aun así cuando hago búsquedas con textos en el que no hay registros, por ejemplo "kgdjd", simplemente no devuelve nada, que es lo que quiero, pero no da error.

He intentado, tal como has comentado, eliminar, en primer lugar: 

 Me.frm_lista_alumnos_sinempresa.SetFocus

Y nada... no funciona

Luego he intentado eliminar 

Me.txtBusquedatrab.SetFocus

Y tampoco...

La cuestión es que solo da error cuando introduzco "nu"


Publicado por: pitxiku
Fecha de publicación: 30/Marzo/2023 a las 22:12
¿Sólo tienes ese código en el formulario y subformulario?

Como sólo haces la búsqueda al acabar de escribir (evento AfterUpdate), puedes probar a quitar completamente el evento Change y probar.

Otra prueba más es sacar a la ventana Inmediato la consulta que has construido para el subformulario, copiarla y usarla en una consulta nueva, como origen de un formulario, ... para ver si te da algún error.

Private Sub txtBusquedatrab_AfterUpdate()

          Dim Consultae As String
          
     
        Consultae = "SELECT  TOP 25 [Fecha de creación],[Fecha de modificación],Id_documento,Nombre,apellido_1,apellido_2, alum_cifempresa"
        Consultae = Consultae & " FROM tbl_alumnos"
        Consultae = Consultae & " WHERE (Nombre Like '*" & Me.txtBusquedatrab & "*'"
        Consultae = Consultae & " OR apellido_1 Like '*" & Me.txtBusquedatrab & "*'"
        Consultae = Consultae & " OR apellido_2 Like '*" & Me.txtBusquedatrab & "*')"

Debug.Print Consultae
        
        Forms![frm_alumnos_general]![frm_lista_alumnos_sinempresa].Form.RecordSource = Consultae
End Sub



Imprimir página | Cerrar ventana