Tengo un formulario llamado Ciudadanos y un SubFormulario denominado Asuntos, el caso están Unidos por el IdCiudadano el caso es que quiero en un evento click que se abra el Formulario Ciudadanos y el Subformulario Asuntos Cambie su origen de datos para que me muestre solo los registros con IDTipoAsunto =2 y me permita editar registros. Lo hago así DoCmd.OpenForm "TBLCIUDADANOS",,, "Forms![tblCiudadanos]![tblAsuntos Subformulario].Form![IdTipoAsunto] = '2'" y me dice que el objeto no admite el método ¿Que estoy haciendo mal.
Lo primero, aclararte una duda que creo que tienes: El filtro y clausula Where que se pueden pasar, opcionalmente, como parámetros al utilizar el Docmd.OpenForm son válidos unicamente para el formulario principal; es decir, en tu caso seria un filtro para el Formulario [TBLCIUDADANOS], nunca para el subformulario [tblAsuntos Subformulario]. Por otro lado, lo que tu quieres hacer, del modo que quieres hacerlo no es posible. Para conseguir lo que pretendes se me ocurren dos opciones: 1º Como supongo que ese valor de selección "2" lo coges de algún lado (lista, dato introducido en el formulario que abre éste, ...), puedes guardar dicho valor en una variable global antes de abrir el formulario TBLCIUDADANOS y en el diseño del subformulario indicarle como criterio o filtro que tenga en cuenta el valor de esa variable. Así cada vez que se haga uso del subformulario, lo hará cargando unicamente los datos que cumplan con la igualdad al dato guardado en la variable global. Esta es una opción poco profesional, ya que no es conveniente utilizarla si puedes usar la 2ª. 2ª Si, como creo, ese "2" lo tienes de alguna manera (lista, dato introducido de selección, etc.) en el formulario que abre éste (el que abre TBLCIUDADANOS), sólo deberás especificar en el diseño del subformulario que para la selección del origen de datos tenga en cuenta como criterio el dato existente en el objeto en cuestión del formulario de apertura. Es decir, si tienes el formulario ABRE con una caja de texto, llemémosla TEXTOSELECCION, para meter un posible valor, pongamos que el "2", y un botón que abra el formulario TBLCIUDADANOS, en el subformulario (en diseño) por en el criterio de selección del campo correspondiente una referencia a ABRE.textoseleccion. Con esto te debería funcionar perfectamente y ademas sería la manera de hacer exactamente lo que quieres. Eso si, ten en cuenta que para cerrar el formulario de apertura (ABRE) antes deberás haber abierto TBLCIUDADADNOS. Si cierras ABRE antes de abrir TBLCIUDADANOS, te aparecerá un error al no poder encontrar el dato para la selección. Un saludo y ya sabes, si tienes alguna otra duda con esto o otra cosa, no dudes en preguntarme. Suerte en tu desarrollo! Óscar L.M.V.