** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Ver en formulario padre, registro de subformulario
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVer en formulario padre, registro de subformulario

 Responder Responder
Autor
Mensaje
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Tema: Ver en formulario padre, registro de subformulario
    Enviado: 17/Noviembre/2022 a las 12:22

Hola. Estoy intentando que en el evento Al Activar registro del subformulario, se visualice el registro en el formulario padre, donde se ve más información en detalle.

Ambos formularios tienen vinculado el Campo "Contrato". Este campo puede tener el mismo valor en varios registros, por lo que cuando abro el formulario principal, "frmContratos", se muestra en el subformulario "frmDetalle", todos los registros del mismo Contrato, pongamos Nº 5599, y en el formulario padre, el primer registro. Y de ahí no se mueve. Yo quiero visualizar en frmContratos, el registro que activo en el subformulario pero no puedo. El código lo he cambiado mil veces. 

Tengo esto:

If Me.Parent.Name = "frmContratos" Then
   Dim frmCurrentForm As Form
   Set frmCurrentForm = Screen.ActiveForm
   If Screen.ActiveControl = "frmContratos" Then
      Dim rst As Recordset
      Set rst = Me.RecordsetClone
      rst.FindFirst IdContrato = Me.IdContrato
      If rst.NoMatch Then
         MsgBox rst.Bookmark
      Else
         Me.Parent.Bookmark = rst.Bookmark
      End If
  End If
End If

La condición de si el formulario padre es "frmContratos" es porque el subformulario está anexado en otro formulario también.

Gracias

Saludos,
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 17/Noviembre/2022 a las 18:35
Hola,

Sospecho que no se mueve porque el subformulario está vinculado por el campo Contrato.

¿No sería más adecuado que el subformulario fuera independiente? Creo que deberías probar sin vincular campos principales ni secundarios.

Un saludo

Xavi, un minyó de Terrassa

Mi web
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 17/Noviembre/2022 a las 19:31

Hola, gracias por responder. Pero quitada la vinculación sigue sin funcionar y ahora no sé cómo hacer para que al abrir el formulario padre, el subformulario me muestre los registros que tienen el mismo Contrato que muestra el padre.

Yo al formulario padre llego desde otro formulario:
DoCmd.OpenForm "frmCG", , , "Contrato = " & Me.Contrato

Y me muestra el primer registro que tiene ese Contrato y también quiero que el subformulario muestre todos del mismo Contrato. Además de eso, mientras me desplazo por el subform, quiero que el registro activo se muestre en el padre, no sé si me estoy explicando,,,

Gracias,

Saludos,

Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 18/Noviembre/2022 a las 00:50

Pues lo he conseguido Thumbs Up pero no sé ni cómo Shocked En el segundo mensaje que puse estaba además mezclando algunos nombres de formularios, para mayor lío.

Me gustaría entender el código un poco mejor, xavi, ¿qué te parece?

Me he valido de esta página:

Detallo. Yo tengo un formulario primario, frmBase que tiene un subformulario hj datos: frmDetalle
Dando doble click en el control "Contrato", me abre el formulario frmContratos con la condición where del Contrato seleccionado:

DoCmd.OpenForm "frmContratos", , , "Contrato = " & Me.Contrato

Bien. Este formulario, también tiene el subformulario anterior, frmDetalle. En el evento "Al activar registro" de frmDetalle tengo este código, que según la web, sincroniza el subformulario con el formulario padre:

If Me.Parent.Name = "frmContratos" Then
   With Me.Parent.RecordsetClone
   .FindFirst "IdCG = " & IdCG
   If Not .NoMatch Then
      Me.Parent.Bookmark = .Bookmark
   Else
     'Aquí el Else realmente me sobra porque siempre tendré registros en el subform, aunque sea uno 
      Me.Parent.SetFocus
      'DoCmd.GoToRecord acForm, Me.Parent.Name 
   End If
   End With
End If

Y en el evento "Al Cargar" del formulario padre: frmContratos, pongo este código, que sincroniza el formulario padre con el subformulario: 

With Me.subCont.Form.RecordsetClone
     If Not .NoMatch Then
        Me.subCont.Form.RecordSource = "select * from tblContratos where Contrato = " & Me.Contrato
      Else
        Me.subCG.SetFocus
      End If
End With

subCont es el nombre del objeto subformulario y tblContratos es la tabla origen de todos los formularios.

En la página web en lugar de Recordsource, ponía también un FindFirst pero no me salía. Y señores me sale. Me sale y no doy crédito. Xavi, ¿es correcto todo, quiero decir, no me petará por algún lado, lo tengo bien hilado? Es que a mí el FindFirst me cuesta pillarlo y no digamos el Bookmark, siempre voy a rebufo y me cuesta hacerme 

Gracias por tu tiempo y saludos!
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 23/Febrero/2023 a las 10:10

Se puede cerrar el hilo

saludos,
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable