Referencia a un subformulario desde otro subformulario

Tengo un FORMULARIO_PRINCIPAL con dos subformularios (SUB1 Y SUB2). Ambos subformularios funcionan con la misma tabla.

- SUB1. Tiene tres campos. Se muestran sólo dos en vista hoja de datos.
- SUB2. Muestra los tres campos en vista de un solo formulario.

Los problemas que tengo y que no consigo solucionar son dos:

1º. Cuando seleccione uno de los registros de SUB1 se tiene que mostrar el mismo registro en SUB2 en vista formulario.

2º. Cuando se cree un nuevo registro en SUB1 (vista hoja de datos) deberá mostrarse el mismo registro en SUB2 (vista formulario) y vicebersa.

Le he dado muchas vueltas pero no doy con la solución. Me parece muy sencillo hacer una referencia a un subformulario desde su formulario principal, pero no desde subformulario a subformulario.

Si alguien sabe cómo hacerlo le agradezco la respuesta.

1 Respuesta

Respuesta
1

A ver si me voy acercando a lo que pides:

1º/ En tu subformulario1, en el evento "Al activar registro" le pones este código:

Private Sub Form_Current()
Dim vCod As String
Dim miFiltro As String
'Cogemos el valor de un campo
vCod = Me.Campo
'Creamos el filtro
miFiltro = "[Campo]='" & vCod & "'"
'Nos vamos al subform SUB2 y le aplicas  el filtro
With Forms!FORMULARIO_PRINCIPAL.SUB2.Form
.Filter = miFiltro
.FilterOn = True
End With
End Sub

Eso suponiendo que el campo por el que filtras es de texto, si fuera numérico, cambia las lineas en cursiva por estas otras:

Dim vCod As Integer

miFiltro = "[Campo]=" & vCod 

Y tendrás que poner los nombres que tu tengas en los campos y formularios.

2º/ En tu subformulario 2, en el evento "Después de Actualizar", le generas este otro código:

Private Sub Form_AfterUpdate()

Dim vCod As String
Dim miFiltro As String
'Cogemos el valor de un campo
vCod = Me.Campo
'Creamos el filtro
miFiltro = "[Campo]='" & vCod & "'"
'Nos vamos al subform SUB1, lo recargas y le aplicas  el filtro
With Forms!FORMULARIO_PRINCIPAL.SUB1.Form

.Requery
.Filter = miFiltro
.FilterOn = True
End With

End Sub

El código lo pongo "de cabeza", sin probarlo, entre otras cosas porque no sé cómo es tu BD. Pero al menos el del punto 1 tendría que funcionar, porque yo lo tengo así funcionando en un par de aplicaciones.

Échale también un vistazo a esta pregunta, que contiene el "germen" del código que te propongo: Subformularios "vinculados" en un formulario.

Ya me irás diciendo.

Muchas gracias, lo primero. Voy a mirarlo con detenimiento este fin de semana y te cuento.

Muchas gracias. Me ha funcionado perfectamente. Tan sólo he tenido que añadir un par de líneas de código para que no se ejecute el filtro cuando la ficha en cuestión tenga registros en blanco, ya que me da error. Por lo demás, ha funcionado a la perfección. La única pregunta que me queda es, ¿cómo hago para que se una vez salgo de SUB 1 se muestre el último registro creado en SUB 2?

Buff, ahí me pillas, no te sabría decir muy bien...

Prueba en el Evento "Al perder el enfoque" del control subformulario que contiene SUB1 con este código:

Forms!FORMULARIO_PRINCIPAL.SUB2.Form.SetFocus
DoCmd. GoToRecord,, acLast

Otra opción, sería que la acción de ir al último registro la programes al entrar en SUB2, si es a donde vas al salir de SUB1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas