Error al hacer referencia a un subformulario desde otro

Tengo el siguiente código en un subformulario para hacer referencia a otro:

With Forms!Alumnado. Subformulario_alumnado_seguimiento_datos.Form

Y en esa linea me sale el error 2465 "Error definido por la aplicación o el objeto". Por más que busco no sé por qué funciona mal. El caso es que utilizo ese mismo código en otro subformulario y me funciona perfectamente. El nombre del subformulario está bien escrito.

1 Respuesta

Respuesta
1

Pedro: Tienes un espacio después del punto pero yo haría><

With Forms!Alumnado![Subformulario_alumnado_seguimiento_datos].Form

Y por supuesto asegurate que el Control que contiene al SubFormulario se llama así : Saludos >> Jacinto

Lo he corregido pero ahora lo que me sale es que no se encuentra el campo 'Subformulario_alumnado_seguimiento_datos' al que se hace referencia en la expresión.

El código completo es el siguiente:

Private Sub Form_Current()
If Not IsNull(Id_seguimiento) Then
    Dim vCod2 As Integer
    Dim miFiltro2 As String
    'Cogemos el valor de un campo
    vCod2 = Me.Id_seguimiento
    'Creamos el filtro
    miFiltro2 = "[Id_seguimiento]=" & vCod2
    'Nos vamos al subform SUB2 y le aplicas  el filtro
    With Forms!Alumnado![Subformulario_Alumnado_seguimiento_datos].Form
    .Filter = miFiltro2
    .FilterOn = True
    End With
End If
End Sub

Gracias Jacinto. He hecho los cambios, pero sigo teniendo problemas. Ahora me dice que Microsoft Access no puede encontrar el campo 'Subformulario_alumnado_seguimiento_datos' al que hace referencia en la expresión. El código completo es el siguiente:

Private Sub Form_Current()
If Not IsNull(Id_seguimiento) Then
    Dim vCod2 As Integer
    Dim miFiltro2 As String
    'Cogemos el valor de un campo
    vCod2 = Me.Id_seguimiento
    'Creamos el filtro
    miFiltro2 = "[Id_seguimiento]=" & vCod2
    'Nos vamos al subform SUB2 y le aplicas  el filtro
    With Forms!Alumnado![Subformulario_Alumnado_seguimiento_datos].Form
    .Filter = miFiltro2
    .FilterOn = True
    End With
End If
End Sub

Pedro: En el contexto que comentas lo más adecuado sería.

Me.[Subformulario_Alumnado_seguimiento_datos].Form.Filter = MiFiltro2

Me.[Subformulario_Alumnado_seguimiento_datos].Form.FilterOn = True

Asegurándote que el Nombre del "Control" que contiene al Subformulario se llame así, que no tiene que coincidir.

Y además supongo que éste código está en el Formulario "Principal"

El código no se encuentra en el formulario principal. El esquema sería el siguiente:

- Formulario principal y dentro de este formulario:
   SUB A1    SUB A2
   SUB B1
   SUB A2

   Tanto SUB A1, como SUB B1 muestran un campo ("Fecha") en vista hoja de datos que, al seleccionarse (a través del evento "Al activar registro") hace un filtro en los subformularios SUB A2 o, en su caso, SUB B2. Los subformularios A1 y A2 manejan la misma tabla de datos. Lo mismo ocurre con B1 y B2

El código que utilizo para dicho filtro es igual en el subformulario A1 que B1, pero mientras en SUB A1 no me da ningún error y funciona bien el filtro, en SUB B1 sí me aparece ese error nada más cargar el formulario. Y eso es lo que me despista.

Pedro: Cuando se abre un Formulario que tiene subformularios, éstos tienen un orden de apertura, y creo estar seguro que cuando desde el Form_Current del SubFormulario SUB B1 das esas Instruccciones, el Objeto que llamas aun no está abierto y cargado.

Si las instrucciones las das desde el Formulario Principal no lo notas porque es eñ útimo que se carga, pero cuando lo haces desde SubFormularios, te has de asegurar de que el SubForm llamado esté abierto y cargado.

Ya me contarás >> Jacinto

Pedro: Como aclaración de lo anterior y puesto que se me haría muy largo de explicar, además sin necesidad porque ya está hecho, te recomiendo éste par de enlaces>>

http://expertosmicrosoftaccess.com/blog/2013/12/18/avoid-groundhog-day-effect/ 

http://expertosmicrosoftaccess.com/blog/2014/01/14/retrasos-al-cargar-subformularios/ 

Espero haberte ayudado. Saludos >> Jacinto

Por las pruebas que he hecho, primero se carga SUB B2 y luego SUB B1. Siendo así, el procedimiento de SUB B1 debería encontrar el objeto de SUB B2. Luego, creo que no sería un problema de carga...

Pedro: La verdad es que ahora si que ando despistado.

Si quieres puedes poner tu BD aquí con un enlace o como alternativa me la envís a [email protected]

En ambos casos lo mejor es que dejes solo unos cuantos datos y que no sean reales.

Los objetos si que han de estar los implicados en el error, Tablas, Formularios, código etc. Saludos >> Jacinto

Te mando la BD por correo, porque no sé cómo enviarla de otra forma...

Hola Jacinto. He mirado lo que me has dicho. Creo que en la base de datos que te he enviado las referencias a subformularios son correctas. El nombre de subformularios que mencionas no existe en la base de datos

Pedro: Acabo de enviarte tu BD modificada y funcionando. Saludos >> Jacinto

Hola Jacinto. En relación al problema que planteaba has dado con la solución perfectamente. Pero he encontrado dos errores que no he conseguido solucionar por más que lo he intentado:

1º Al añadir un nuevo registro en SUB B2, desaparecen todos los registros en SUB B1 salvo el registro que acabo de añadir.

2º Cuando intento crear un registro pulsando "Nuevo registro" en SUB B2 salta el error 2105. Esto suele ocurrir cuando quiero crear dos registros seguidos, una detrás de otro.

3º Cuando creo un nuevo registro en SUB A2 y SUB B2 no se actualiza SUB A1 y SUB B1. Tengo que cerrar el formulario principal y volver a entrar para que se actualice.

Pedro: Esto es lo que yo llamo un 4 en 1. Casualmente no he borrado tu BD, porque esperaba tu respuesta. Ando como casi siempre bastante escaso de tiempo. A la que pueda ponerme le echo una ojead y te comento.

Para no alargar más este tema ya que el objetivo inicial está cubierto, valora por favor la respuesta y a éstas nuevas preguntas te contesto por email. Saludos >> Jacinto

Muchas gracias Jacinto. Si te parece abrí otra pregunta con las otras cuestiones...

Perfecto Pedro: Así te podrás beneficiar de más de una respuesta y comparar solociones. Estaré al tanto .Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas