Cuando trabaja con datos relacionales en Access, a menudo necesita ver varias tablas o consultas en el mismo formulario. Por ejemplo, es posible que quiera ver los datos del cliente de una tabla y la información del pedido del cliente de otra tabla al mismo tiempo. Los subformularios lo hacen más fácil y Access ofrece varias formas rápidas de crearlos.
¿Qué quiere hacer?
- Información sobre subformularios
- Crear o agregar un subformulario
- Crear un formulario que contenga un subformulario mediante el Asistente para formularios
- Agregar uno o varios subformularios a un formulario existente mediante el Asistente para subformularios
- Crear un subformulario arrastrando un formulario hasta otro
- Abrir un subformulario en una nueva ventana de la vista Diseño
- Cambiar la vista predeterminada de un subformulario
- Agregar datos relacionados a un formulario sin crear un subformulario
Información sobre subformularios
Un subformulario es un formulario que se inserta en otro formulario. La forma principal se denomina forma principal y la forma adjunta se denomina subformulario. Una combinación de formulario y subformulario a veces se denomina formulario jerárquico, formulario principal/detallado o formulario primario/secundario.
Los subformularios funcionan especialmente bien cuando se desean mostrar datos de tablas o consultas que tienen una relación de uno a varios. En este tipo de relación, el valor de clave principal de cada registro de la tabla principal coincide con el valor del campo o campos coincidentes de muchos registros de la tabla relacionada. Por ejemplo, puede crear un formulario que muestre los datos de los empleados y un subformulario que muestre los pedidos de cada empleado. Los datos de la tabla Empleados son el lado “uno” de la relación. Los datos de la tabla Pedidos son el lado "varios" de la relación, porque cada empleado puede tener más de un pedido.
El formulario principal muestra datos del lado "uno" de la relación.
El subformulario muestra los datos del lado "varios" de la relación.
El formulario principal y el subformulario de este tipo de formulario están vinculados de forma que en el subformulario solo se muestran los registros relacionados con el registro actual del formulario principal. Por ejemplo, cuando en el formulario principal se muestra la información de Naiara Padilla, en el subformulario solo se muestran sus pedidos. Si el formulario y el subformulario estuvieran desvinculados, el subformulario mostraría todos los pedidos, no solo el de Nancy.
En la tabla siguiente se definen los términos relacionados con los subformularios. Access controla la mayoría de los detalles si usa los procedimientos descritos en este artículo, pero es útil saber lo que sucede entre bastidores si necesita realizar cambios más adelante.
| Término | Definición |
|---|---|
| Control de subformulario | Control que inserta un formulario en otro. El control de subformulario se puede considerar como una "vista" de otro objeto de la base de datos, ya sea otro formulario, una tabla o una consulta. El control de subformulario proporciona propiedades que permiten vincular los datos presentados en el control a los datos del formulario principal. |
| Propiedad Objeto origen | Propiedad del control de subformulario que determina el objeto que se muestra en el control. |
| Hoja de datos | Representación simple de datos en filas y columnas, similar a una hoja de cálculo. El control de subformulario muestra una hoja de datos cuando su objeto de origen es una tabla o consulta, o cuando su objeto de origen es un formulario cuya Default View propiedad está establecida en Datasheet. En estos casos, el subformulario se denomina a veces hoja de datos u hoja secundaria de datos en vez de subformulario. |
| Propiedad Vincular campos secundarios | La propiedad del control de subformulario que especifica qué campo o campos del subformulario lo vinculan al formulario principal. |
| Propiedad Vincular campos principales | La propiedad del control de subformulario que especifica qué campo o campos del formulario principal lo vinculan al subformulario. |
Nota
- Para obtener los mejores resultados, establezca relaciones entre tablas antes de seguir los procedimientos de este artículo. De este modo, Access podrá crear automáticamente los vínculos entre los subformularios y los formularios principales. Para ver, agregar o modificar relaciones entre las tablas de la base de datos, en la pestaña Herramientas de base de datos , en el grupo Relaciones , haga clic en Relaciones.
- Cuando un control de subformulario tiene un formulario como objeto de origen, contiene los campos que se colocan en el formulario. Puede verlo como un formulario único, un formulario continuo o una hoja de datos. Una ventaja de basar un subformulario en un objeto de formulario es que puede agregar campos calculados al subformulario, como
[Quantity] * [Unit price]. - Se puede insertar una hoja de datos o vista dinámica en un formulario creando un control de subformulario cuyo objeto de origen sea una tabla o consulta. Para obtener más información, vea la sección Agregar datos relacionados a un formulario sin crear un subformulario.
Crear o agregar un subformulario
Use la siguiente tabla para determinar el procedimiento que es más adecuado para la situación.
| Escenario | Procedimiento recomendado |
|---|---|
| Desea que Access cree un formulario principal y un subformulario, y que vincule el subformulario al formulario principal. | Crear un formulario que contenga un subformulario con el Asistente para formularios |
| Desea usar un formulario existente como formulario principal, pero desea que Access cree un nuevo subformulario y lo agregue al formulario principal. | Agregar uno o varios subformularios a un formulario existente con el Asistente para subformularios |
| Desea usar un formulario existente como formulario principal y desea agregar uno o varios formularios existentes a ese formulario como subformularios. | Crear un subformulario arrastrando un formulario hasta otro |
Crear un formulario que contenga un subformulario mediante el Asistente para formularios
Con este procedimiento se crea una nueva combinación de formulario y subformulario mediante el Asistente para formularios. También es la forma más rápida de empezar si aún no ha creado los formularios que desea usar como formulario principal o subformulario.
En el grupo Formularios de la pestaña Crear, haga clic en Asistente para formularios.
En la primera página del asistente, en la lista desplegable Tablas/Consultas, seleccione una tabla o consulta. En este ejemplo, para crear un formulario Empleados que muestre los pedidos de cada empleado en un subformulario, seleccione Tabla: Empleados (el lado "uno" de la relación uno a varios).
Nota
No importa la tabla o consulta que elija primero.
Haga doble clic en los campos de esta tabla o consulta que desee incluir.
En la misma página del asistente, en la lista desplegable Tablas/consultas, seleccione otra tabla o consulta de la lista. En este ejemplo, seleccione la tabla Pedidos (el lado "varios" de la relación uno a varios).
Haga doble clic en los campos que quiera incluir de la tabla o consulta.
Al hacer clic en Siguiente (si configuró correctamente las relaciones antes de iniciar el asistente), se mostrará la pregunta ¿Cómo desea ver los datos? (es decir, de qué tabla o consulta). Seleccione la tabla del lado “uno” de la relación uno a varios. En este ejemplo, para crear el formulario Empleados, seleccione por Empleados. En el asistente se mostrará un diagrama pequeño de un formulario. La página será similar a ilustración siguiente:
El cuadro de la parte inferior del diagrama de formulario representa el subformulario.
Nota
Si en el asistente no se muestra la pregunta ¿Cómo desea ver los datos?, quiere decir que Access no encontró una relación uno a varios entre las tablas o consultas seleccionadas. El asistente continuará, pero Access no agregará un subformulario al formulario. Antes de continuar, puede hacer clic en Cancelar y examinar las relaciones entre tablas.
En la parte inferior de la página del asistente, seleccione Formulario con subformularios y, a continuación, haga clic en Siguiente.
En la página ¿Qué distribución desea aplicar al subformulario?, haga clic en la opción de diseño que desee y, a continuación, haga clic en Siguiente. Ambos estilos de diseño organizan los datos del subformulario en filas y columnas, pero un diseño tabular ofrece más opciones. Se puede agregar color, gráficos y otros elementos de formato a un subformulario tabular, mientras que una hoja de datos es más compacta, como la vista de hoja de datos de una tabla.
En la página siguiente del asistente, seleccione un estilo de formato para el formulario y, después, haga clic en Siguiente. Si seleccionó Tabular en la página anterior, el estilo de formato que seleccione también se aplicará en el subformulario.
En la página final del asistente, escriba los títulos que desee para los formularios. Access asigna nombres a los formularios según los títulos que escriba, y etiqueta el subformulario de acuerdo con los títulos que escriba para el subformulario.
Especifique si desea abrir el formulario en la vista Formulario, para que pueda ver o introducir información, o en la vista Diseño, para modificar su diseño y, a continuación, haga clic en Finalizar. Access crea dos formularios: uno para el formulario principal que contiene el control del subformulario y otro para el propio subformulario.
Agregar uno o varios subformularios a un formulario existente con el Asistente para subformularios
Use este procedimiento para agregar uno o varios subformularios a un formulario existente. Para cada subformulario, puede optar por que Access cree un nuevo formulario o use uno existente como subformulario.
- Haga clic con el botón derecho en el formulario existente del panel de navegación y, después, haga clic en Vista Diseño.
- En la pestaña Diseño de formulario , en el grupo Controles , haga clic en la flecha abajo para mostrar la galería Controles y asegúrese de que está seleccionada la opción Usar asistentes de control .
- En la pestaña Diseño de formulario , en el grupo Controles , haga clic en el botón Subformulario/Subinforme .
- Haga clic en el formulario donde quiera colocar el subformulario.
- Siga las instrucciones del asistente. Al hacer clic en Finalizar, Access agregará un control de subformulario al formulario. Si selecciona la opción para que Access cree un formulario para el subformulario (en lugar de usar un formulario existente), Access creará el objeto de formulario y lo agregará al panel de navegación.
Crear un subformulario arrastrando un formulario hasta otro
Use este procedimiento si desea usar un formulario existente como formulario principal y agregarle uno o varios formularios existentes como subformularios.
- En el panel de navegación, haga clic con el botón secundario en el formulario que desee usar como formulario principal y, a continuación, haga clic en Vista Presentación.
- Arrastre el formulario que quiera usar como el subformulario desde el panel de navegación hasta el formulario principal. Access agregará un control de subformulario al formulario principal y enlazará el control al formulario que arrastró desde el panel de navegación. Access también intentará vincular el subformulario al formulario principal, según las relaciones que definió en la base de datos.
- Repita este paso para agregar más subformularios al formulario principal.
- Para comprobar que la vinculación se haya realizado correctamente, en el grupo Vistas de la pestaña Inicio, haga clic en Ver, elija Vista Formulario y, a continuación, use el selector de registros del formulario principal para ver varios registros. Si el subformulario se filtra correctamente para cada empleado, el procedimiento está completo.
Si la prueba anterior no funciona, Access no pudo determinar cómo vincular el subformulario con el formulario principal y las Link Child FieldsLink Master Fields propiedades and del control subform están en blanco. Estas propiedades deben configurarse manualmente de la siguiente manera:
Haga clic con el botón derecho en el formulario principal del panel de navegación y, después, haga clic en Vista Diseño.
Haga clic una vez en el control de subformulario para seleccionarlo.
Si no se muestra el panel de tareas Hoja de propiedades, presione F4 .
En la hoja de propiedades, haga clic en la pestaña Datos.
Haga clic en el botón Crear situado junto al
Link Child Fieldscuadro de propiedades.
Aparece el cuadro de diálogo Enlazador de campos de subformulario .En las listas desplegables Campos principales y Campos secundarios, seleccione los campos a los que quiera vincular los formularios y, después, haga clic en Aceptar. Si no está seguro de los campos que quiere usar, haga clic en Sugerir para que Access intente determinar los campos vinculantes.
Recomendación
Si no ve el campo que desea usar para vincular los formularios, es posible que necesite editar el origen de registros del formulario principal o secundario para asegurarse de que se incluye el campo de vinculación. Por ejemplo, si el formulario está basado en una consulta, debe asegurarse de que el campo de vinculación está en los resultados de la consulta.
Guarde el formulario principal, cambie a la vista Formulario y, a continuación, compruebe que el formulario funciona según previsto.
Abrir un subformulario en una nueva ventana de la vista Diseño
Si quiere cambiar el diseño de un subformulario mientras trabaja en el formulario principal en la vista Diseño, puede abrir el subformulario en su propia ventana:
- Haga clic en el subformulario para seleccionarlo.
- En la pestaña Diseño de formulario , en el grupo Herramientas , haga clic en Subformulario en ventana nueva.
Cambiar la vista predeterminada de un subformulario
Al agregar un subformulario a un formulario, el control subformulario/subinforme muestra el subformulario según la propiedad del Default View subformulario. Esta propiedad se puede establecer en los siguientes valores:
- Un único formulario
- Formularios continuos
- Hoja de datos
- Formulario dividido
Al crear un subformulario por primera vez, esta propiedad se puede establecer en Formularios continuos o en Formulario único. Sin embargo, si establece la Default View propiedad de un subformulario en Datasheet, el subformulario se muestra como una hoja de datos en el formulario principal.
Para establecer la Default View propiedad de un subformulario:
Cierre todos los objetos abiertos.
En el panel de navegación, haga clic con el botón derecho en el subformulario y, después, haga clic en Vista Diseño.
Si aún no se muestra la Hoja de propiedades, presione F4 para mostrarla.
En la lista desplegable en la parte superior de la hoja de propiedades, asegúrese de que la opción Formulario está seleccionada.
En la pestaña Formato de la hoja de propiedades, establezca la propiedad Vista predeterminada en la vista que desee usar.
Nota
Si la vista que desea usar no está en la lista, asegúrese de que la
Allow...Viewpropiedad de esa vista esté establecida en Sí. Por ejemplo, si desea especificar Hoja de datos como la vista predeterminada para el formulario, asegúrese de que la propiedad Permitir vista Hoja de datos esté establecida en Sí.Guarde y cierre el subformulario. A continuación, abra el formulario principal para comprobar los resultados.
Agregar datos relacionados a un formulario sin crear un subformulario
No siempre es necesario crear un objeto de formulario independiente para mostrar los datos relacionados. Por ejemplo, si trabaja en un formulario en la vista Presentación o en la vista Diseño y arrastra una tabla o consulta desde el panel de navegación hasta el formulario, Access creará un control de subformulario o subinforme y se mostrarán los datos en ese objeto. La propiedad del Default View objeto determina cómo se muestran los datos. Normalmente, esto se establece en la vista Hoja de datos, pero también puede establecer la Default View propiedad de una tabla o consulta en Formulario único, Formulario dividido o Formularios continuos, lo que le da más flexibilidad a la hora de mostrar datos relacionados en los formularios.
Nota
Cambiar la Default View propiedad de una tabla o consulta determina cómo se muestra cada vez que se abre, ya sea que la abra desde el panel de navegación o la vea en un control de subformulario o subinforme. Dado que el cambio de configuración de la vista de una tabla a veces puede provocar confusión cuando se abre la tabla desde el panel de navegación, se recomienda usar una consulta para este procedimiento en lugar de una tabla.