Abrir Formulario filtrado dependiendo Parámetro

Tengo el Siguiente Formulario:

Les explico un poco: en esta BD tengo 10 Tablas para cada año empezando desde 1999 hasta el 2009, así me lo han pedido, ya que yo hubiera echo una tabla en vez de 10 tablas, pero en fin... Lo que quiero hacer es lo siguiente:

El botón que señalo con "flecha azul" es un botón que filtra hacia otro formulario donde se muestran todos los campos para ses registro. Pero tuve que hacer una consulta de UNION para poder mostrar los registros de las 10 tablas, y lo que estoy observando es que la consulta no me deja hacer modificaciones sobre los registros, por lo que ese botón no esta cumpliendo su propósito.

Lo que busco hacer es que ese botón de de Detalles, filtre al otro formulario que tengo, pero que abra la tabla correspondiente en el formulario filtrado, dependiendo el valor del campo de Año;

Ej.

El primer registro tiene el año de 1999, entonces si le doy clic en su botón de detalle, me filtre el subformulario por año (osea 1999) pero tomando los valores de su tabla correspondiente a su año.

Al igual pasará si, abro los detalles de un registro que tiene como año 2001, que me muestre los campos correspondientes de la tabla del 2001 para poder modificar el registro.

tengo la idea de con CASE o IF se puede hacer pero no tengo idea de como hacerlo.

2 Respuestas

Respuesta
2

Una forma sencilla, suponiendo que tus tablas se llaman igual y tienen los mismos campos, salvo por el año: modificar el origen de datos (el recordsource) del formulario que abres con el botón a esa tabla.

A grandes rasgos, en el evento "Al hacer click":

DoCmd. OpenForm "NombreFormulario"

Forms("NombreFormulario").RecordSource="Tabla" & Me.NombreCampoAño

Forms("NombreFormulario"). Requery

Con la primera linea abres el formulario (ponle el nombre), con la segunda, le asignas la tabla correspondiente, formandola con la parte "fija" más el valor del campo que contiene el año, y con la tercera, recargas los datos para mostrar en el formulario los de la tabla que acabas de cargar.

A ver si te sirve.

Un saludo

http://nksvaccessolutions.com/Foro/ 

Una forma sencilla, suponiendo que tus tablas se llaman igual y tienen los mismos campos, salvo por el año: modificar el origen de datos (el recordsource) del formulario que abres con el botón a esa tabla.

A grandes rasgos, en el evento "Al hacer click":

DoCmd. OpenForm "NombreFormulario"

Forms("NombreFormulario").RecordSource="Tabla" & Me.NombreCampoAño

Forms("NombreFormulario"). Requery

Con la primera linea abres el formulario (ponle el nombre), con la segunda, le asignas la tabla correspondiente, formandola con la parte "fija" más el valor del campo que contiene el año, y con la tercera, recargas los datos para mostrar en el formulario los de la tabla que acabas de cargar.

A ver si te sirve.

Un saludo


La segunda línea no la comprendo bien; supongamos que mis tablas se llaman tblobligaciones1999; tblobligaciones2000; tblobligaciones 2001... etc.

En la parte que tu indicas como "tabla", ¿debo poner el nombre de todas mis tablas?

La segunda línea no la comprendo bien; supongamos que mis tablas se llaman tblobligaciones1999; tblobligaciones2000; tblobligaciones 2001... etc.

En la parte que tu indicas como "tabla", ¿debo poner el nombre de todas mis tablas?

Svein ya entendí la segunda línea, hice lo siguiente:

Forms("frmDetalleRegistro").RecordSource = "TblObligaciones" & Me.Año_BDO

Pero al darle clic al botón me abre el formulario pero en blanco...

Como debe estar confeccionado el formulario, ¿en este caso frmDetalleRegistro?

No tiene que estar configurado de ninguna manera especial, con asignarle un origen válido (y con datos) y hacer el requery, tendría que funcionar.

Mira que no tengas ningún filtro puesto de antes, no se me ocurre otra explicación.

Respuesta
1

Carlos: ya que la pregunta me sale sugerida, y en la línea que apunta Sveinbjorn, yo dejaría el Formulario que vas a abrir sin origen de Datos y en cada apertura, le pasaría el que corresponda.

Saludos a los dos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas