Dudas sobre la utilización de formularios y subformularios en una base de datos en access

He estado probando y probando y antes de seguir me gustaría asegurarme de
que se puede hacer.
Tengo un formulario con un subformulario dependiente.
En el formulario principal quiero seleccionar un año y un mes
En el subformulario quiero que aparezca en un cuadro combinado solamente los
días que tienen relación en una tabla con esos datos introducidos en el
formulario principal.
Gracias por adelantado
Respuesta
1
Puedes estar tranquilo de que efectivamente se puede hacer.
Lo único que debes tener en cuenta, es que el cuadro combinado del subformulario debe estar controlado por los cuadros combinados del formulario principal. Es decir, cuando realices la selección en el año, y/o en el mes, debes realizar una select de los registros que deben aparecer en el cuadro combinado del subformulario, y asignárselos en los eventos después de actualizar de cada campo (afterupdate) con el método recordsource, más o menos de la siguiente forma:
Set F=FORMS![NombreFormularioPrincipal]
SET SF=F![NombreSubformulario].form
SF![NombreCuadroCombinadoSubformulario].Recordsource=sql
Donde sql es un string que previamente se ha montado con los datos seleccionados en los cuadros combinados del formulario principal, más o menos de la siguiente forma:
Dim sql as string
sql="SELECT * FROM Tabla WHERE Campo1=[PrimerCriterio] AND Campo2=[SegundoCriterio]"

1 respuesta más de otro experto

Respuesta
1
¿Me podrías aclarar lo que quieres hacer? Es que no te he entendido muy bien. Por ejemplo, los días del cuadro combinado, ¿qué relación tienen con el mes y el año del formulario principal? Te refieres a que si seleccionas, por ejemplo, enero 2001, el cuadro combinado muestre los días del 1 al 31, y si es febrero del 2001, ¿muestre los días del 1 al 28?
Gracias por aclarármelo. Estaré encantado de ayudarte.
CArLeS!
Hola, muchas gracias por interesarte.
Te aclaro lo que quiero hacer.
La aplicación consiste en una agenda donde tu puedes introducir notas para un determinado día.
Lo que quiero hacer es escoger un mes y un año y que en el cuadro combinado solo salgan los días que tienen datos introducidos.
Por ejemplo. Si diciembre del 2001 tiene anotaciones en la agenda para el día 1, el día 6 y el día 15, en el cuadro combinado solamente salgan las fechas de esos días.
El motivo para hacer esto es poder escoger, un año, un mes, y un día que tenga introducidos datos en la agenda para poder visualizarlos.
Perdona las molestias, si te va a robar mucho tiempo no te molestes, ya me lo miraré yo, pero es que no se me ocurre como hacerlo.
Para hacer esto habrá miles de formas, pero así a bote pronto la que se me ocurre es la siguiente:
Imagina que el formulario principal (donde eliges el año y el mes) se llama frmMain (por decir algo). En el tenemos dos cuadros combinados (o cualquier otro control, da igual) que se llaman cbYear (selector de año) y cbMonth (selector de mes). Yo, lo que haría, seria entonces coger el cuadro combinado de los días, y en la propiedad DataSource (origen de datos) pones que sea una consulta, llámale por ejemplo qrDias. Ahora tendrás que construir la consulta, donde utilizaremos como parámetros los valores seleccionados en cbYear y cbMonth. Esto se hará así (por ejemplo, luego tienes que adaptarlo a tus tablas):
Teniendo en cuenta que el campo fDia es de tipo fecha/hora:
SELECT * FROM TablaDias WHERE Month(TablaDias.fDia)=[Forms]![frmMain]![cbMonth] AND Year(TablaDias.fDia)=[Forms]![frmMain]![cbYear]
Una vez hayas creado la consulta, lo único que tienes que hacer es que frmMain actualice el contenido del cuadro de días cada vez que se seleccione un valor de él. Esto lo puedes hacer, usando el Evento Click() de ambos cuadros combinados (el de año y el de mes). En ellos pones el código siguiente: cbDias. Requery
Esto debería funcionar, bueno, debes retocar los detalles para hacerlo coincidir con la estructura de la que tu dispones.
Ya me dirás que tal.
CArLeS!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas