Filtrar desde un subformulario a otro.

Tengo un form pricipal con 3 subform. Necesito que al hacer click en un registro del subform1 el subform3 me muestre información de ese registro pero que si hago click a otro registro del subform2 entonces el subform3 me muestre datos de ese registro.
Es decir, el subform3 sirve para mostrar todos los datos que tengo de un registro los subform 1 y 2 sirven para elegir qué registro quiero ver.
Había pensado crear un evento "al hacer clic" tanto en el subform1 como en el subform2 que haga que el subform3 se posicione en el registro seleccionado, pero desconozco qué código debería poner.

1 Respuesta

Respuesta
1
Lo que se me ocurre es filtrar la información del subformulario 3. Para esto vamos a crear un procedimiento de evento Al Activar Registro del Formulario principal y entre private Sub y End Sub
Me.NOMBRESUBFORMULARIO3.Filter = ""
Me.NOMBRESUBFORMULARIO3.FilterOn = True
Me.NOMBRESUBFORMULARIO3.Requery
Sustituye nombresubformulario3 por el nombre que tenga el mismo y coloca en la primera expresión, entre las comillas, el filtro. Por ejemplo el subformulario3 está relacionado con el formulario1 por un campo que se llama cod y sólo quiero mostrar los que cumplan esa condición, pondría "cod=Forms![FORMULARIO1]![NOMBRECAMPO]"; en este caso sustituye NOMBRECAMPO por el nombre que tenga en el formulario 1
Puedes aplicar lo mismo con el subformulario2
Hola jpaniagua.
Gracias por tu respuesta.
Creo que he hecho lo que me has dicho pero no me funciona.
En el formulario principal he creado un campo llamado Filtro1 que se actualiza con el nombre del proveedor según me muevo por los registros de mi subform1.
Ahora creo un evento en el campo filtro1 para que cada vez que cambie el nombre del proveedor entonces el subform 3 se filtre. He tecleado esto:
Private Sub Filtro1_AfterUpdate()
Me.Sub_Proveedores.Filter = "Nombre Proveedor=Forms![Estudios en Curso]![Filtro1]"
Me.Sub_Proveedores.FilterOn = True
Me.Sub_Proveedores.Requery
End Sub
El nombre real de mi subformulario es Sub Proveedores; he probado con y sin guión. No me aparece ningún error pero el sub Proveedores se queda siempre en el primer registro y no me filtra.
¿Sabes qué puede ser?
Gracias.
Nombre proveedor tiene que ir entre corchetes
Cuando un control lleve espacios o signos de puntuación, guiones, etc.. debe estar encerrado entre corchetes. De todas maneras prueba a hacerlo "a lo bruto": Abre el subformulario3 en vista diseño, en las propiedades, Datos, Filtro, Coloca la expresión que has escrito y comprueba que es correcta ya que lo único que hago con el procedimiento es pasar esa cadena a la propiedad filtro del formulario.
Hola,
Al intentarlo en bruto resulta que no puedo filtrar. Cuando intento filtrar por formulario en el desplegable de proveedores en lugar de salir todos los proveedores me sale Es nulo Es no nulo. Supongo que por eso el filtro no funciona. ¿Cómo lo soluciono?
Muchas gracias por la ayuda que me estás prestando.
Comprueba el origen de datos del formulario. Deberías tener la lista completa si esta basado en la tabla o consulta si no vamos a forzar a que el origen de datos sea lo que selecciones.
Prueba este código:
Dim ssql As String
ssql = "SELECT Cod_Proveedor, Proveedor FROM TPROVEEDORES WHERE (Cod_Proveedor)=Forms![Estudios en curso]![Filtro1]"
Ahora teclea Me.  y sub debería aparecete una lista selecciona el correcto
Me.Sub.RecordSource = ssql
Me.Sub.Requery

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas