Abrir formulario filtrando por un campo en subformulario

Disculpen lo burdo del titulo de la pregunta pero no se como explicarlo en pocas palabras.

Necesito hacer lo siguiente: quiero abrir un formulario filtrado por un parámetro (Id) pero el campo "ID" esta en un Subform dentro del Form principal, y no se como referenciar al sub para que abra con el valor que le estoy pasando (id). Actualmente estoy usando este código:

Private Sub Comando29_Click()
Dim NombreForm As String
NombreForm = "forContractual"
If CurrentProject.AllForms(NombreForm).IsLoaded Then DoCmd.Close acForm, NombreForm
'Abro el formulario NombreForm, pasandole como parámetro el Id del registro seleccionado
DoCmd.OpenForm FormName:=NombreForm, WindowMode:=acWindowNormal, WhereCondition:=" IdSitio = '" & Me.IdSitio & "'"
End Sub

"forContractua"l es el nombre del subform que esta dentro del Form principal, pero como hago referencia  al subform?

He visto formas de hacer como Forms![FormPrincipal]![Subform].Form!... Etc. Pero no me resulta.

1 respuesta

Respuesta
1

Carlos: Creo que eso está bien para abrir un Formulario "Externo", pero lo veo inadecuado para "Filtrar", que si no lo he entendido mal, es lo que pretendes.

Para Filtrar el SubForm yo pondría un Botón en el Formulario y en el Evento Click de ese Botón, entre el Private y el End, algo así.

Dim FiltroSitio As String

FiltroSitio = "IdSitio = '" & Me.IdSitio & "'"

Me.ForContractual.Fom.Filter = FiltroSitio

Me.ForContractual.Form.FilterOn = True

Un saludo >> Jacinto

Hola Jacinto, gracias por la respuesta. Realmente no es lo que necesito ya que el "forContractual" es el Subformulario al que quiero llegar, y esta dentro del formulario principal "externo" por así decirlo.

Carlos: Ahora me despistas un poco, pero a ver si avanzamos.

Tu tienes un Formulario desde donde pretendes filtrar uno que en principio no tiene que estar abierto. Entonces el Subformulario que quieres filtrar ¿Está dentro de otro?

Dime por favor los abjetos que intervienen y como están en la Aplicación. Un saludo >> Jacinto

Es correcto Jacinto, te explico:

Mi form "infoSitios" es el formulario desde donde pretendo filtrar usando un botón de comando, y que tomará el valor del campo "IdSitio" para filtrar el subformulario

El form "Contractual" es el formulario principal, que contiene el subform "subfrmContra", que es quien contiene los datos y por ende el campo IdSitio por el que es el valor condición para filtrar.

Esos son los objetos que intervienen. Espero poder aportar más información con esto, para que puedas ayudarme.

Gracias!

Carlos: En principio me parece que con ésto será suficiente, pero ya he de mirarlo mañana porque hoy es tarde aquí en España. Un saludo > Jacinto

Carlos: Lo primero es capturar el valor del IdSitio del Formulario Información del Sitio y para ello has de declarar una variable Publica en un Modulo Estandar >> Public ElSitio As String. Otra Public Frm As Form

Pulsando en esos prismáticos has de incluir una Línea con

ElSitio = Me.Idsitio

Abres el Formulario “ForContractual”

DoCmd.OpenForm “FormContractual”

Set Frm = Forms!ForContratual!SubFrmContra.Form

Dim FiltroSitio As String

FiltroSitio = "Frm.IdSitio = '" & ElSitio & "'"

Frm.Fom.Filter = FiltroSitio

Frm.FilterOn = True

Por ahí debería ser el camino. Y si así sigues con dificultades aísla esos objetos en una pequeña BD y me la envías con algunos datos que pueden ser inventados. Un saludo >> Jacinto

¡Gracias!

Excelente planteamiento, hice algunas modificaciones pero ya puedo filtrar los datos en el subformulario, muchas gracias Jacinto, agradezco tu tiempo y tu ayuda.

Saludos desde México!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas