Práctica 2: Sistema de Gestión de Bases de Datos Parte III: Diseño de Formularios en Access Ofimática 2003/2004 Dpto. Lenguajes y Sistemas Informáticos Práctica 2.3. Microsoft Access. Diseño de Formularios. 2 1. Introducción. Los formularios son la herramienta que proporciona Access para usar de manera intuitiva y cómoda las BDs que hemos creado. Un formulario tiene tres modos de presentación distintos: Vista Diseño. En este modo se construye el formulario. Vista Formulario. Podemos introducir, modificar y ver datos usando el formulario propiamente dicho. Vista Hoja de datos. Podemos introducir, modificar y ver datos usando una hoja de datos. Tenemos varios registros a la vez. Cuando utilizamos un formulario para introducir o presentar datos de la BD, hay que conectarlo a una tabla o a una consulta, que será su origen de datos. La forma más rápida para comenzar a entender el funcionamiento de un formulario es abrirlo en modo Vista Diseño y ver cual es su origen de datos. Para ver y/o cambiar el origen de datos de un formulario usaremos la propiedad Origen del Registro, en el menú Ver: Si todos los datos están en una tabla, basaremos el formulario en dicha tabla. Si tenemos los datos en varias tablas, el formulario se basará en una consulta. Los formularios se pueden crear con o sin ayuda del Asistente para formularios. El asistente acelera el proceso de creación del formulario, ya que produce automáticamente un formulario sencillo preformateado solicitando una información mínima. Una vez creado el formulario básico con el asistente, podremos modificarlo mediante la Vista Diseño. Se recuerda que se deberá también aprender a crear formularios sin la ayuda de los asistentes y que estos podrían no estar instalados. 2. Secciones de un formulario. Las secciones son elementos fijos del diseño del formulario. En Access tenemos cinco tipos de secciones: Encabezado del formulario. Presenta un título para el formulario, instrucciones de uso y botones que abren formularios relacionados o que realizan otras tareas. En el modo de presentación Vista Hoja de datos no se muestra el encabezado del formulario. Encabezado de página. Sólo aparece en formularios impresos. Sección detalle. Presenta los registros. Puede mostrar un registro por pantalla o por página, o bien tantos registros como quepan en la pantalla o página. Pie de página. Sólo aparece en formularios impresos. Pie de formulario. No se muestra en el modo Vista Hoja de datos. Los encabezados y los pies se agregan o eliminan como parejas de elementos. Podemos ajustar el tamaño de las secciones, y establecer sus propiedades. Aunque los encabezados y los pies existen por parejas, tienen distintas hojas de propiedades, permitiendo, por ejemplo, mostrar un encabezado y no mostrar el pie. 3. Propiedades de un formulario. Los formularios, como los controles y las secciones, tienen un conjunto de propiedades que afectan a su apariencia y comportamiento general. Para mostrar la hoja de propiedades del formulario haremos doble click en la zona gris exterior a cualquier sección del formulario o en la esquina donde se juntan las reglas. Un formulario va a tener un modo de presentación predeterminado que vendrá dado por la propiedad Vista predeterminada. Esta propiedad tiene tres valores posibles: Formulario simple. Se presenta un sólo registro a la vez en pantalla. Formularios continuos. Se presentan varios registros simultáneamente. Hoja de datos. Formato de filas y columnas. Este modo de presentación es bueno para subformularios. La opción Vistas permitidas sirve para especificar si van a estar disponibles los modos de presentación Formulario y Hoja de datos o solamente uno de ellos. Práctica 2.3. Microsoft Access. Diseño de Formularios. 3 Como ya sabemos, los formularios se usan para: introducir, editar o ver datos. Se puede preparar un formulario de manera que al abrirlo pueda utilizarse para su objetivo principal. En la categoría de Datos podremos especificar las propiedades: Permitir ediciones. Permitir eliminación. Permitir agregar. Entrada de datos. Activamos esta propiedad si sólo vamos a permitir añadir nuevos registros. Al abrir el formulario se mostrará un nuevo registro el blanco. 4. Controles. Los formularios constan de dos elementos principales: la ventana en donde se nos presentará el formulario y los controles. Toda la información del formulario está contenida en controles. Los controles son objetos del formulario que muestran datos, realizan acciones o decoran el formulario. Algunos controles dependen de campos existentes en la tabla o consulta subyacente, permitiendo introducir datos en los campos o ver los datos de dichos campos. Por ejemplo, se pueden introducir y mostrar datos utilizando cuadros de texto, cuadros de lista, botones de opción, etc. Para mostrar imágenes utilizaremos marcos de objetos. Otros controles muestran información que sólo está almacenada en el diseño del formulario. Por ejemplo, las etiquetas se utilizan para mostrar textos descriptivos, y las líneas y rectángulos, para organizar los datos y añadir atractivo al formulario. Cuando agregamos un control a un formulario debemos decidir de dónde obtiene dicho control la información que va a mostrar. Por esto vamos a tener tres tipos de controles: Dependientes. Su origen de datos es un campo de la tabla o consulta subyacente. Se utilizan para mostrar, introducir y actualizar los valores de los campos de la base de datos. Independientes. No tienen ningún origen de datos. Se utilizan para mostrar información, líneas, rectángulos e imágenes. Por ejemplo, una etiqueta que muestra el título de un formulario o el nombre de un campo es un control independiente. Calculados. Su origen de datos es una expresión. Una expresión es una combinación de operadores, nombres de controles, nombres de campos, funciones y constantes. 4.1. Creación de controles. Para crear un control de cuadro de texto dependiente de un campo podemos hacerlo de dos maneras: Arrastrando el campo que se desee desde la lista de campos (en el menú Ver) hasta el formulario. En este caso se creará un control de cuadro de texto dependiente del campo seleccionado. Un cuadro de texto dependiente tiene una etiqueta adjunta que toma como título predeterminado el nombre del campo (o el título de éste, en caso de que haya sido especificado en la definición de la tabla). La etiqueta adjunta a un cuadro de texto es a su vez un control (en este caso independiente). Utilizando el Cuadro de herramientas (para visualizarlo accedemos a la opción Barras de herramientas del menú Ver). En este caso seleccionamos el icono correpondiente en el cuadro de herramientas y hacemos click sobre la ventana del formulario para indicar dónde ubicaremos el control. El control es creado como un control independiente. Para convertirlo en un control dependiente basta con escribir el nombre del campo dentro del control. La primera opción es preferible a la segunda, ya que la etiqueta adjunta toma como título predeterminado el del campo subyacente, y lo más importante, el cuadro hereda las propiedades de dicho campo. Para crear un control de cualquier tipo, haremos click en la herramienta correspondiente del cuadro de herramientas. Si queremos que el control sea dependiente, arrastraremos el campo subyacente de la lista de campos hasta la ventana del formulario. Si queremos crear un control independiente o calculado simplemente haremos click sobre el lugar correspendiente de la ventana del formulario. Práctica 2.3. Microsoft Access. Diseño de Formularios. 4 Para crear un control calculado escribiremos la expresión que calcula el valor a mostrar dentro del control, precedida del operador igual (=). Por ejemplo, para crear un cuadro de texto que muestre la fecha actual, escribiremos dentro del cuadro la expresión =Fecha(). 4.2. Propiedades de los controles. Los controles tienen asociadas unas determinadas propiedades que podemos agrupar en categorías: Formato. Presentan características de apariencia del control. Datos. Presentan características de los datos mostrados en el control. La propiedad Origen del control muestra, en el caso de un control dependiente, el campo de la tabla o consulta subyacente. En el caso de un control calculado, el origen del control mostrará la expresión que calcula el valor del campo, pudiendo utilizar el generador de expresiones para construir dicha expresión. Eventos. Macro o procedimiento de evento que Access ejecuta cuando ocurre un evento como la pulsación de ciertas teclas, el cambio de los datos del control o al hacer click sobre el control. Otras. Nombre, descripción del control en barra de estado, orden de tabulación del control en el formulario, etc. Al crear un control, una serie de propiedades toman valores por defecto. Podemos cambiar las propiedades predeterminadas para un tipo de control seleccionando la opción Propiedades del menú Ver. Si cambia el valor de una propiedad del control, la propiedad del campo correspondiente no se ve afectada. Igualmente, si cambia el valor de una propiedad de un campo en una tabla o consulta subyacente después de haber creado el formulario que utiliza ese campo, deberemos actualizar el valor de esa propiedad en todos los controles dependientes de dicho campo. Se pueden cambiar simultáneamente las propiedades de varios controles utilizando la tecla mayúsculas para seleccionarlos en grupo. En la ventana de la hoja de propiedades aparecerá el texto: Selección múltiple. Access ofrece una gran variedad de controles que se pueden utilizar para hacer que el uso del formulario más sencillo. Así, podemos reemplazar cuadros de texto por cuadros de lista o por grupos de opciones para seleccionar un valor en lugar de tener que escribirlo. También podemos utilizar líneas y rectángulos para agrupar la información relacionada o para crerar efectos especiales tales como sombreados. 4.3. Cuadros de lista y cuadros combinados. Un cuadro de lista es una lista de valores entre los que se puede elegir el deseado. Un cuadro combinado es como un cuadro de texto y un cuadro de lista combinados en un solo control. Las listas que aparecen en estos dos tipos de cuadros constan de una serie de filas de datos. Cada fila puede tener una o más columnas, y las columnas pueden aparecer con o sin encabezados. En el caso de los cuadros combinados, se puede controlar si se permite introducir o no valores nuevos. Información mostrada por un cuadro de lista o combinado. Dependiendo de cuál sea el origen de la información a mostrar en las filas de la lista, se pueden crear cinco tipos de listas para un cuadro de lista o combinado. La propiedad Tipo de origen de la fila se establece de acuerdo con el tipo de lista a mostrar: Se pueden presentar las filas directamente desde cualquier tabla o consulta. En este caso elegiremos Tabla/Consulta como Tipo de origen de la fila, e indicaremos el nombre de la tabla o consulta en la propiedad Origen de la fila. Se pueden presentar valores de una instrucción SELECT de SQL, en cuyo caso elegiremos Tabla/Consulta, y escribiremos la consulta SQL en el Origen de la fila. Se pueden escribir los valores exactos, generando lo que se denomina una Lista de valores. En el Origen de la fila escribiremos los valores a mostrar separados por signos de punto y coma. Se puede crear una Lista de campos que muestra los nombres de los campos pertenecientes a una tabla o consulta. En el Origen de la fila escribiremos el nombre de la tabla o consulta. Se pueden mostrar valores obtenidos a partir de una función de Access Basic, para lo cual indicaremos el nombre de la función en la propiedad Tipo de origen de la fila. Cuando deseemos mostrar múltiples columnas en una lista, debemos establecer las propiedades Número de columnas y Ancho de columnas en la categoría Formato. La propiedad Número de columnas especifica el número de columnas Práctica 2.3. Microsoft Access. Diseño de Formularios. 5 que mostrará la lista. Si el origen de la fila es una tabla o consulta, la lista mostrará el número especificado de campos de dicha tabla o consulta, empezando por la izquierda. En la propiedad Ancho de columnas se especifican las anchuras de las columnas a mostrar en la lista, separadas por punto y coma. Si la anchura de una columna se establece a cero, ésta permanecerá oculta. Si se deja en blanco (escribimos solamente el punto y coma), la anchura de la columna se establecerá por defecto. En un cuadro combinado, en la parte superior (el cuadro de texto) se mostrará solamente el valor situado en la primera columna visible a la izquierda de la lista. Cuando se despliegue la lista, se verán todas las columnas. Valor asignado al control de cuadro de lista o combinado. En un cuadro combinado se puede seleccionar un valor de la lista o bien se puede introducir un valor que no figure en dicha lista. Si queremos asegurar que los únicos valores que se introducirán en el cuadro son los ya incluidos en la lista, debemos establecer la propiedad Limitar a la lista. Cuando se seleccione un valor de la lista, el valor del control cambiará al valor de una de las columnas de la lista. La propiedad Columna dependiente sirve para especificar qué columna se utilizará para los valores del control. Es importante resaltar que el valor mostrado por el cuadro puede ser diferente del valor que tome el cuadro. Por ejemplo, podríamos mostrar las columnas Código y Nombre de la tabla de Actividades con anchos de campo 0 cm y 3 cm, respectivamente (lo cual haría que se visualizara solamente la columna Nombre), y especificar como columna dependiente la columna 1 (es decir, el Código). Si hacemos que el control sea dependiente de un campo (mediante la propiedad Origen del control), dicho campo tomará el valor que tome el control (de acuerdo con lo especificado en la propiedad Columna dependiente). 4.4. Casillas de verificación, botones de opción y botones de alternar. Estos tipos de controles se utilizan para definir valores Sí/No. Cuando están seleccionados, estos controles indican un valor Sí o Verdadero. Cuando están desactivados, indican un valor No o Falso. Estos controles son especialmente útiles cuando dependen de campos Si/No, en cuyo caso Access almacenará el valor en la tabla subyacente y lo mostrará en el formulario. Si los controles dependen de otro tipo de campo, Access almacenará el valor –1 si el control está seleccionado, y 0 si no lo está. 4.5. Grupos de opciones. Los grupos de opciones se utilizan para presentar un conjunto limitado de alternativas. Un grupo de opciones consta de un marco de grupo que contiene un conjunto de casillas de verificación, botones de opción o botones de alternar. El marco dispone de una etiqueta adjunta. Un grupo de opciones facilita la selección de un valor, puesto que permite hacer click en una de las alternativas sin necesidad de escribir en un cuadro de texto ni desplazarse por una lista. Además, se puede establecer como predeterminada una de las opciones para simplificar la introducción de datos. Solamente se puede seleccionar una opción de un grupo a la vez. Si un grupo de opciones es dependiente de un campo, será el marco del grupo quien dependa del campo, no cada opción individual existente dentro de él. Un marco de grupo también se puede establecer como un objeto independiente. Cuando en un grupo de opciones se utilicen casillas de verificación, botones de opción o botones de alternar, las propiedades de éstos serán diferentes a cuando se utilizan como controles independientes. Cada opción de un grupo tiene su propia propiedad Valor de la opción, en lugar de la propiedad Origen del control. El grupo de opciones tomará el valor asignado a la propiedad Valor de la opción de la opción seleccionada. Si el grupo de opciones es dependiente de un campo, dicho campo tomará el Valor de la opción que haya sido seleccionada. Una opción dentro de un grupo solamente podrá tomar valores numéricos. 5. Subformularios. Tenemos dos métodos a la hora de construir formularios que presenten información que proviene de más de una tabla: Práctica 2.3. Microsoft Access. Diseño de Formularios. 6 Crear una consulta que combine datos de varias tablas y después basar un formulario en esa consulta. Usar un subformulario, que es simplemente un método para introducir un formulario dentro de otro formulario. El formulario que es incluido en el formulario principal recibe el nombre de subformulario. En este método, el formulario principal y el subformulario deben estar vinculados, de modo que el subformulario sólo mostrará los registros que estén relacionados con los del formulario principal. El uso de subformularios es muy aconsejable para mostrar datos almacenados en tablas o en consultas con una relación de 1-N, pero, hay que tener mucho cuidado a la hora del diseño de las tablas o consultas subyacentes. Hay que fijarse en si: Las tablas tienen una relación 1-N. El formulario principal presenta la tabla con cardinalidad (1) y el subformulario la tabla con cardinalidad (N). ¿Tienen las tablas campos que las vinculen? Hay que establecer el campo común sobre el que se puedan vincular. ¿Están indexados los campos que vinculan las tablas? Si usamos un vínculo que no es clave principal ni externa puede ser interesante indexarlo. Para crear un formulario principal y un subformulario, debemos diseñar ambos por separado. Después insertaremos el subformulario en el formulario principal. Un subformulario es un formulario independiente, es decir, se diseña y se guarda exactamente de la misma forma que cualquier otro formulario. Después se puede agregar a un formulario principal. Para ello, seguimos los siguientes pasos: 1. 2. 3. Abrimos el formulario principal en modo Vista Diseño. En el Cuadro de herramientas seleccionamos Subformulario/Subinforme y marcamos el área que ocupará el subformulario dentro del formulario principal. En las propiedades del subformulario, especificaremos como Origen del objeto el nombre del subformulario. Las propiedades Vincular campos secundarios y Vincular campos principales se establecerán por defecto si las tablas o consultas subyacentes están relacionadas adecuadamente. Práctica. 1. 2. 3. 4. 5. 6. 7. Diseñar un formulario de entrada de datos para cada una de las tablas de nuestra base de datos. Crear controles de casillas de verificación, botones de alternar y/o botones de opción para los campos que tomen valores Si/No. Crear controles de cuadros de lista y/o combinados para los campos Actividad y Empresa de los formularios para las tablas de Empresas y Afiliados, respectivamente. Crear un grupo de opciones para el campo Periodo del formulario de Recibos. Diseñar un formulario para ver las empresas de cada actividad, no permitiendo modificar ni añadir nuevas empresas. Diseñar un formulario para editar y añadir nuevos recibos de afiliados utilizando subformularios. El formulario deberá mostrar el número y la suma de los importes de los recibos pendientes del afiliado Diseñar algún otro formulario de introducción/modificación de datos que se considere interesante a la hora de manejar la información de la base de datos. Para la realización de la práctica propuesta, modificar las definiciones de las tablas y/o crear las consultas que se consideren oportunas.