di

Resumen

En este tutorial se describen los pasos necesarios para la creación de una base de datos con Microsoft Access. Se describen los pasos necesarios para la definición de tablas, la creación de relaciones, la creación de consultas, la creación de formularios y la creación de informes. También se describen los pasos necesarios para la carga de datos en las tablas, y la creación de formularios basados en subformularios.

Objetivos
  • Familiarizarse con Microsoft Access.

  • Aprender a definir tablas y definir restricciones sobre las columnas.

  • Aprender a establecer relaciones y configurar restricciones sobre cardinalidad e integridad referencial.

  • Aprender a crear consultas con la interfaz QBE de Access.

  • Aprender a crear formularios simples y Maestros-detalle basados en tablas y consultas.

  • Aprender a crear informes basados en tablas y consultas.

  • Aprender a crear los componentes básicos de una aplicación de bases de datos basada en formularios.

  • Aprender a crear consultas parametrizadas con valores introducidos desde cuadros de texto y listas desplegables.

1. Descripción de Microsoft Access

Microsoft Access para Windows es un SGBDR (Sistema de Gestión de Bases de Datos Relacional) idóneo para la iniciación al desarrollo de Sistemas de Bases de Datos. Con esta herramienta podremos crear aplicaciones para bases de datos comenzando con la definición del esquema lógico de la base de datos, y construyendo a partir de él una interfaz de explotación para dicha base de datos, utilizando para ello las características de Microsoft Access.

Tras iniciar Access, aparecerá una ventana de bienvenida similar a la de la figura siguiente.

access

Desde aquí, podemos elegir entre crear una base de datos nueva en blanco, a partir de una plantilla, o abrir una base de datos existente. Elegimos la opción Base de datos en blanco, accediendo al panel Base de datos en blanco, que incluye un cuadro de texto en el que introduciremos el nombre de la base de datos que vamos a crear (p.e. Practica1), y permite indicar la ubicación del archivo.

Una vez que haya creado la base de datos, se habrá creado un archivo con la extensión .accdb. Este va a contener la estructura de la base de datos, las restricciones que defina sobre los datos, así como los programas de aplicación y rutinas de tratamiento de datos que utilice en su Sistema de Base de Datos. El formato por defecto es el de Access 2007-2016, pero puede cambiarlo usando el botón Opciones de Access del cuadro de diálogo mostrado al seleccionar el menú Archivo, tal y como se ilustra en la figura siguiente.

opciones

Llegados a este punto, accederemos a la vista Hoja de datos de Herramientas de tabla de Access, preparada para crear la primera tabla.

hoja datos

Antes de crear una tabla, vamos a describir las pestañas de la barra de menú, teniendo en cuenta que las cuatro primeras pestañas son comunes, y el resto dependen del contexto de trabajo.

La pestaña Inicio incluye las secciones Vistas, Portapapeles, Ordenar y filtrar, Registros, Buscar y Formato de texto.

inicio

La pestaña Crear se utiliza para crear los distintos objetos de los que consta un archivo de Access: Tablas, Formularios, Informes, Consultas y Macros.

crear

La pestaña Datos externos permite incorporar y exportar información de fuentes externas hacia y desde una base de datos Access. Las secciones son Importar y vincular, y Exportar.

datos externos

La pestaña Herramientas de base de datos incluye las secciones Herramientas, Macro, Relaciones, Analizar, Mover datos, y Complementos.

herramientas

La pestaña Campos de la tabla incluye las secciones Vistas, Agregar y eliminar, Propiedades, Formato y Validación de campo.

campos tabla

Por último, la pestaña Tabla incluye secciones para la definición de macros que se podrán configurar para que se ejecuten antes o después de realizar operaciones contra una tabla de la base de datos. También incluye la sección de Relaciones.

tabla
Note

Las macros son un conjunto de instrucciones que se pueden utilizar para automatizar tareas repetitivas. Las macros se pueden ejecutar automáticamente al abrir una base de datos, o en respuesta a un evento (p.e. al hacer clic en un botón, al hacer clic en un hipervínculo, …​). Como ejemplo de macro sencilla, podemos tener una macro que muestre un mensaje de bienvenida al abrir una base de datos con la descripción de la base de datos, minimizando la ventana de la base de datos, y abriendo un formulario.

2. Definición de tablas

Para definir una tabla, seleccione la pestaña Crear. En la sección Tabla, dispone de varias opciones. La opción Tabla permite crear la tabla en la vista de Hoja de datos, donde podemos introducir directamente los datos sin especificar los atributos. También podemos crear una tabla en modo de diseño, o a partir de una plantilla. Es posible incorporar una tabla nueva a la base de datos mediante vinculación o mediante incrustación.

Note

La diferencia entre vinculación e incrustación es que en el primer caso se crea un enlace a una tabla externa, mientras que en el segundo caso se copian los datos de la tabla externa a la base de datos actual. La vinculación es útil cuando se quiere acceder a los datos de una tabla externa sin copiarlos, y la incrustación es útil cuando se quiere trabajar con los datos de una tabla externa sin depender de la conexión a la base de datos externa.

Seleccione la opción Diseño de tabla. A continuación, aparecerá una ventana para que defina la estructura de una tabla, especificando los nombres de los campos, los tipos de datos de cada campo y una breve descripción del contenido de cada campo.

Los nombres de campo de una tabla pueden tener hasta 64 caracteres de longitud y se permiten la inclusión de espacios en los nombres de campo.

La tabla siguiente ilustra los principales tipos de datos para definir un campo:

Tipo de datos Descripción

Texto corto

Cadena de hasta 255 caracteres.

Texto largo

Cadena de hasta 32.000 caracteres. (No se pueden indexar, y por tanto no se puede ordenar por campos de este tipo)

Número

Un tipo de datos numérico (real, entero, …​).

Fecha/Hora

Valores de fecha y hora comprendidos entre el año 100 y el año 9999.

Moneda

Valores monetarios.

Autonumeración

Número que se autoincrementa cada vez que se añade un registro a la tabla.

Sí/No

Valores booleanos.

Objeto OLE

Contienen cualquier tipo de objeto OLE (p.e. una imagen).

Hipervínculo

Permite definir un enlace hipertexto.

Datos adjuntos

Permite adjuntar archivos.

Asistente para búsquedas

Permite introducir una consulta o lista de valores para rellenar el campo.

Note

Los campos de tipo Autonumeración son campos que se incrementan automáticamente cada vez que se añade un registro a la tabla. Access se encarga de incrementar el valor de este campo automáticamente, y no se puede modificar el valor de este campo. Access también se encarga de mantener la unicidad de los valores de este campo. Este tipo es útil para definir claves primarias si el dominio no ofrece un valor único para cada registro, o si no se quiere depender de un valor externo, entre otros casos.

Además, una vez establecido el tipo de datos de un campo, se pueden especificar sus propiedades:

propiedades texto corto
propiedades numerico

Propiedades para un campo Texto corto

Propiedades para un campo Numérico

Como restricciones generales caben destacar las siguientes:

  • Valor predeterminado: Valor por defecto asignado al campo en caso de no introducir ninguno.

  • Regla de validación: Regla que debe cumplirse para que sea válido (p.e. para un campo de calificación podríamos tener la exppresión >= 0 AND ⇐ 10). En el caso de infringir la regla de validación, Access mostrará un cuadro de mensaje con el texto que indique en la propiedad Texto de validación.

  • Texto de validación: Texto que muestra Access cuando se introduce un valor que no cumple la regla de validación.

  • Requerido: Exige que el campo no quede vacío.

  • Indexado: Define un índice en disco. Access se encargará de su mantenimiento.

Además, en los tipos Texto, Número y Fecha/Hora, podemos restringir los caracteres que se introducen como valor de un campo utilizando las máscaras de entrada. Estas máscaras de entrada especifican una expresión en la que indican el tipo de valor que puede tomar cada carácter.

La máscara de entrada controla los caracteres introducidos en un campo, uno a uno, con esta notación:

  • 0: Dígito (0-9, entrada requerida, signos más [+] y menos [-] no permitidos).

  • #: Dígito o espacio (entrada no requerida, las posiciones en blanco se convierten en espacios, y se permiten los signos más y menos).

  • 9: Dígito o espacio (entrada no requerida, signos más y menos no permitidos).

  • L: Letra (A-Z, entrada requerida).

  • ?: Letra (A-Z, entrada opcional).

  • A: Letra o dígito (entrada requerida).

  • a: Letra o dígito (entrada opcional).

  • &: Cualquier carácter o espacio (entrada requerida).

  • C: Cualquier carácter o espacio (entrada opcional).

  • . , : ; - /: Marcador de posición decimal y separadores de miles, fecha y hora. (El carácter que se utilice depende de lo establecido en la sección Internacional del Panel de control de Microsoft Windows).

  • <: Pasa todos los caracteres que vengan a continuación a minúsculas.

  • >: Pasa todos los caracteres que vengan a continuación a mayúsculas.

  • !: Hace que la máscara de entrada se rellene de derecha a izquierda, en lugar de izquierda a derecha, cuando los caracteres de la izquierda de la máscara de entrada son opcionales. Puede incluir el signo de admiración en cualquier lugar de la máscara de entrada.

  • \: Hace que el carácter que viene a continuación se presente como carácter literal ASCII (por ejemplo, \A se muestra como A).

A continuación, se muestran varios ejemplos de máscaras de entrada:

  • Teléfono en formato internacional: +00 000 000 000 (p.e. +34 950 21 00 00)

  • Fechas en formato europeo: 00/00/00 (p.e. 31/12/2025)

  • Fechas en formato americano: 00\-00\-0000 (p.e. 2`025/12/31`)

  • NIF: 00000000>L (p.e. 12345678A)

No debemos confundir la máscara, que controla la entrada, con el formato, que es un formato de presentación de la salida.

Para la definición de claves (atributos que identifican de forma inequívoca a una entidad), seleccione los campos que desee, pulse con el botón derecho del ratón y seleccione Clave principal en el menú contextual, o bien seleccione Clave principal en la sección Herramientas del menú.

Example 1. Creación de tablas

Crear tres tablas con la definición siguiente:

Tabla Alumno

Campo Tipo de datos Restricciones

nombre

Texto corto

Longitud < 50. Requerido

primerApellido

Texto corto

Longitud < 50. Requerido

segundoApellido

Texto corto

Longitud < 50. Requerido

NIF

Texto corto

Longitud 9. Clave. Máscara de entrada: 00000000>L

codigoPostal

Texto corto

Longitud 5. Máscara de entrada: 00000

direccion

Texto corto

Longitud < 100

Tabla Asignatura

Campo Tipo de datos Restricciones

codigo

Texto

Longitud 8. Clave

asignatura

Texto

Longitud 50. Requerido

Tabla Estudia

Campo Tipo de datos Restricciones

NIF

Texto

Longitud 9. Clave. Máscara de entrada: 00000000>L

codigo

Texto

Longitud 8. Clave

nota

Numérico sin decimales

Valor >=0 y ⇐ 10. Dos posiciones decimales. Texto de validación: La nota debe estar entre 0 y 10

3. Diseño de formularios sencillos

Los formularios son plantillas para la presentación o introducción por pantalla de los datos de la base de datos, y disponen de una serie de herramientas para la creación de rótulos, campos, botones de orden, botones de opción, casillas de verificación, y en general cualquier característica propia de las aplicaciones Windows.

En primer lugar, pulse la pestaña Crear. En la sección Formularios, disponemos de diversas opciones. Si elige Formulario, se creará automáticamente un formulario sobre la tabla que tenga seleccionada en el Panel de exploración. Para controlar el proceso de creación, pulse el botón Asistente para formularios.

Para empezar, crearemos un formulario basado en una tabla. Para ello, seleccione la tabla Alumno del cuadro de lista desplegable, seleccione Asistente para formularios. Accederá a un cuadro de diálogo para seleccionar los campos a incluir en el formulario.

En el cuadro desplegable Tablas/Consultas puede elegir el origen de los campos. En el cuadro de la izquierda aparecen todos los campos de la tabla o consulta origen. En el cuadro de la derecha están los campos que van a aparecer en el formulario. Pulse el botón >> para incluir todos los campos de la tabla en el formulario, y pulse Siguiente.

asistente formularios

En el siguiente cuadro de diálogo puede seleccionar la distribución de los elementos en el formulario. Puede elegir entre una presentación en columnas, tabular, hoja de datos o justificado. Deje la opción predeterminada y pulse Siguiente.

asistente formularios2

El último cuadro de diálogo se utiliza para definir un título para el formulario, y poder abrir el formulario con los datos, o bien modificar el diseño generado por el asistente. Cambie el título del formulario a Información sobre alumnos, y pulse el botón Finalizar.

asistente formularios3

Una vez seguidos estos pasos, deberá obtener un formulario como el siguiente:

formulario

Cuando pulse el botón Cerrar del formulario, se creará un formulario con el mismo nombre que haya elegido como título.

Para abrir el formulario, haga doble clic en su nombre en el Panel de exploración, o seleccione Abrir en el menú contextual. Para modificar el formato del formulario, seleccione Vista diseño en el menú contextual.

Example 2. Creación de un formulario

Diseñar un formulario para la presentación de los datos de las asignaturas con todos los campos y en formato columnas, con el título Información sobre asignaturas. Guardaremos el formulario con el nombre Información sobre asignaturas.

4. Diseño de informes sencillos

La definición de informes permite la creación de plantillas para que pueda imprimir por impresora o en un archivo el contenido de una tabla o el resultado de una consulta.

Para definir un informe en Microsoft Access, se siguen una serie de pasos similares a los utilizados en la definición de formularios.

En primer lugar, pulse la pestaña Crear. En la sección Informes, disponemos de diversas opciones. Si elige Informe, se creará automáticamente un informe sobre la tabla que tenga seleccionada en el Panel de exploración. Para controlar el proceso de creación, pulse la opción Asistente para informes.

Después de realizar la selección, se iniciará el asistente para la creación de informes, y en su primer cuadro de diálogo le pide que seleccione los campos que desea incluir en su informe.

Veamos un ejemplo de creación de informe teniendo seleccionada la tabla Alumno.

En el cuadro de la izquierda aparecen todos los campos de la tabla o consulta origen, y en el de la derecha los campos que van a aparecer en el informe. Seleccione el campo primerApellido y pulse el botón > para mover este campo al área derecha. Repita esta operación con los campos segundoApellido y nombre. A continuación, pulse el botón Siguiente.

asistente informes

El paso siguiente del asistente es un cuadro de diálogo que pregunta si desea realizar algún tipo de agrupación. En nuestro caso esto no tiene utilidad, pero sí sería interesante en el caso de un listado de alumnos por asignaturas. En tal caso, las asignaturas definirían lo que se conoce en Access como nivel de agrupamiento.

Note

El nivel de agrupamiento en un informe es un campo o conjunto de campos que se utilizan para agrupar los registros en el informe. Access agrupa los registros que tienen el mismo valor en el campo de agrupamiento. Por ejemplo, si se agrupan los registros por asignatura, Access mostrará un encabezado para cada asignatura, y los registros de cada asignatura aparecerán debajo de su encabezado.

En el paso siguiente se seleccionan los campos por los que desea ordenar. Seleccione en la primera lista desplegable el campo primerApellido y pulse el botón de al lado para cambiar el tipo de ordenación (ascendente o descendente) Repita esta operación en las listas siguientes con los campos segundoApellido y nombre. A continuación, pulse el botón Siguiente.

asistente informes2

A continuación, aparece un cuadro de diálogo para que seleccione el tipo de informe que desea, así como la orientación de la página y el espaciado entre las líneas del informe. Seleccione la distribución Tabular y la orientación Vertical. A continuación, pulse el botón Siguiente.

asistente informes3

El último cuadro de diálogo le pide un título del informe, que en nuestro caso será Listado de alumnos y puede seleccionar entre ver la presentación del informe o modificar el diseño del mismo. Deje los valores por omisión y pulse el botón Finalizar.

asistente informes4

De esta forma tan sencilla ha generado un informe que contiene una lista de los alumnos matriculados ordenados alfabéticamente. Para finalizar pulse el botón Cerrar y guarde los cambios de este informe con el nombre Listado de alumnos.

Example 3. Diseño de un informe sencillo

Diseñar un informe para la presentación de asignaturas ordenadas por nombre, con el título Listado de asignaturas. Guardaremos este informe con el nombre Listado de asignaturas.

5. Creación de relaciones

Como Microsoft Access es un SGBDR, dispone de un modelo de datos propio en el que se especifica el esquema de datos lógico creado (en este caso según un modelo relacional). Para ello, Access dispone de una ventana gráfica de relaciones en las que se pueden describir las relaciones entre las tablas, así como las propiedades de las relaciones. La definición de estas relaciones es importante, ya que Access las utilizará para verificar la integridad de los datos, así como para simplificar la creación de consultas, formularios e informes que utilicen atributos que pertenecen a distintas tablas. Es recomendable crear las relaciones antes de introducir ningún dato. Además, Access puede malinterpretar el tipo de relación entre dos tablas si las claves principales no están bien definidas.

Para abrir la ventana Relaciones, seleccione la pestaña Herramientas de base de datos, y en la sección Relaciones, seleccione Relaciones. Aparecerá una ventana que muestra las tablas y consultas disponibles, como muestra esta figura. Sitúe el cursor sobre cada una de las tablas y pulse el botón Agregar las tablas relacionadas. De esta forma se van añadiendo las tablas a la ventana Relaciones, y el paso siguiente es la creación de relaciones, y la definición de sus propiedades.

Note

Access identifica que se trata de una relación 1:M ya que la tabla Estudia tiene una clave primaria compuesta por dos atributos, y cada uno de estos atributos es clave foránea en las tablas Alumno y Asignatura. Access también identifica que la relación es 1:M porque la tabla Alumno tiene una clave primaria simple, y la tabla Estudia tiene una clave foránea que es clave primaria en la tabla Alumno. Por último, Access identifica que la relación es 1:M porque la tabla Asignatura tiene una clave primaria simple, y la tabla Estudia tiene una clave foránea que es clave primaria en la tabla Asignatura.

agregar tablas

Al seguir estos pasos, obtendrá la ventana Relaciones, en la que aparecen las tres tablas, y en cada una los atributos de cada tabla, marcando los atributos que son clave principal con el icono correspondiente. Para una mejor interpretación, mueva las tablas Asignatura y Estudia (arrastrándolas con el ratón), de forma que la tabla Estudia quede en medio, tal y como muestra la figura siguiente.

relaciones

Una vez que se han agregado las tablas, falta definir las relaciones entre las entidades, y este va a ser el paso siguiente.

Las relaciones entre tablas se realizan seleccionando un atributo del esquema de una tabla y arrastrándolo al atributo del esquema de la tabla con la que está relacionado, y es importante el orden en que se haga, de forma que el primer atributo que se seleccione será el primero en la forma de especificar la relación (esto es importante en las relaciones uno a muchos y muchos a uno).

Arrastre el atributo NIF de Alumno al atributo NIF de Estudia, y aparecerá el cuadro de diálogo siguiente para especificar las propiedades de la relación, en el que Access ha elegido automáticamente Uno a varios como tipo de relación. Observe que no podemos cambiar el tipo de relación elegido por Access. Si es erróneo, tendremos que revisar la definición de las claves, los índices o los datos existentes en las tablas.

relacion

Como el modelo de datos del SGBD no es el mismo que el modelo conceptual creado, hay que hacer una traducción al modelo de datos del SGBD, de la forma siguiente:

En términos de Entidad-Relación, el conjunto de entidades Alumno está relacionado mediante una relación muchos a muchos con el conjunto de entidades Asignatura, de forma que un alumno puede estar matriculado de varias asignaturas, y en una misma asignatura hay matriculados varios alumnos. Pero el modelo de datos que utiliza el SGBD es un modelo relacional, en el que para este ejemplo hay una tabla para el conjunto de entidades Alumno, una tabla para el conjunto de entidades Asignatura y una tabla para el conjunto de relaciones Estudia.

En este ejemplo, la transformación del conjunto de relaciones M:N del modelo Entidad-Relación al modelo del SGBD se hace creando una tabla para la relación Estudia con la unión de claves primarias (relación Estudia), una relación 1:M del atributo NIF de la tabla Alumno al atributo NIF de la tabla Estudia, y una relación 1:M del atributo codigo de la tabla Asignatura al atributo codigo de la tabla Estudia.

Además, seleccione la casilla de verificación Exigir integridad referencial, para que en la tabla subordinada solo pueda haber registros que estén relacionados con registros existentes en las tablas Alumno y Asignatura. Seleccione además las dos casillas de verificación Actualizar en cascada los campos relacionados y Eliminar en cascada los registros relacionados. Esto hará que si se modifica la clave primaria de un alumno o de una asignatura se propagará ese cambio de forma automática a la tabla Estudia. Por otro lado, si se elimina un alumno o una asignatura, automáticamente se propagará la eliminación del registro relacionado en la tabla Estudia.

Note

La integridad referencial es una propiedad de las relaciones que garantiza que los datos de una tabla relacionada se mantienen consistentes con los datos de la tabla principal. Esto quiere decir que para todo registro en la tabla relacionada debe existir un registro en la tabla principal.

relaciones2

A continuación, pulse el botón Cerrar y se guardarán las modificaciones de las relaciones de las tablas de la base de datos.

6. Carga de datos

Access permite importar datos desde varias fuentes, como hojas de cálculo, archivos de texto, bases de datos de otros SGBD, etc. A modo ilustrativo vamos a importar datos en las tablas definidas desde archivos de texto. Dado que el esquema de la base de datos que tenemos definida ya cuenta con varias restricciones (p.e. claves primarias, restricciones de integridad referencial, etc.), los datos que importemos deben cumplir con estas restricciones. En caso contrario, Access no permitirá la importación de los datos. Además, se deberán importar en cierto orden, ya que está definida la integridad referencial. Esto impedirá que puedan existir registros en la tabla Estudia que no se correspondan con alumnos y asignaturas existentes. Así, importaremos la tabla Estudia en último lugar para no infringir la restricción de integridad referencial.

Para importar datos, seleccione la pestaña Datos externos, y en la sección Importar y vincular, seleccione Nuevo origen de datos | De un archivo | Archivo de texto. Aparecerá un cuadro de diálogo en el que indicaremos la ruta donde están los archivos de texto que se van a importar en las tablas de la base de datos, y las opciones de importación. Estas opciones permiten:

  • Importar el archivo de texto en una tabla de la base de datos. Si la tabla no existe, Access la creará automáticamente. Si la tabla existe, Access sobrescribirá los datos existentes.

  • Añadir los datos del archivo de texto a una tabla existente. En este caso los datos existentes se conservarán y los nuevos datos se añadirán al final de la tabla.

  • Vincular los datos del archivo de texto a una tabla de la base de datos. En este caso, los datos del archivo de texto se mantienen en su ubicación original, y se creará una tabla en la base de datos que contendrá un enlace a los datos del archivo de texto.

En nuestro caso optaremos por la segunda opción, la que añade los registros a los registros existentes de una tabla. Esto lo haremos para cada una de las tablas y con sus respectivos archivos de texto (Alumno.txt, Asignatura.txt y Estudia.txt. Estos archivos están disponibles en la zona de Grupo de trabajo | Recursos complementarios | Archivos de datos en Aula virtual). A continuación, se muestra un ejemplo de importación de datos en la tabla Alumno.

importar datos

Tras la importación, las tablas deben mostrar los registros siguientes.

tabla alumno
tabla asignatura
tabla estudia

7. Diseño de consultas

Access dispone de un entorno gráfico para la generación de consultas que es muy sencillo de utilizar. Lo ideal es utilizar este entorno para crear una primera aproximación de la consulta, y a continuación editar la sentencia SQL y modificarla si es necesario.

Para crear una consulta, seleccione la pestaña Crear. En la sección Consultas, tenemos las opciones Asistente para consultas y Diseño de consulta. Nosotros elegiremos Diseño de consulta. Aparecerá un cuadro de diálogo para que indique las tablas o consultas que participan en la consulta. Para este ejemplo, seleccione la tabla Alumno y pulse el botón Agregar. De esta forma se añadirá la tabla Alumno a la ventana de la consulta. Pulse el botón Cerrar.

consulta agregar tablas

También es posible utilizar el Asistente para consultas del menú Crear. Esto mostrará un cuadro de diálogo para que elijamos si queremos utilizar el asistente para la creación de consultas. De acuerdo con los conocimientos limitados que tenemos en esta primea práctica, por ahora sólo podríamos crear consultas basadas en una sola tabla, por lo que será una opción con una gran limitación y por ahora no utilizaremos el asistente para consultas.

asistente consultas

La figura siguiente ilustra la ventana de definición de consultas.

consulta

7.1. Creación de una consulta basada en una sola tabla

Vamos a crear una consulta que muestre el nombre de todos los alumnos de la tabla Alumno.

Para ello, arrastraremos el atributo nombre al área Campos que participan en la consulta. Después de hacer esto, vemos que debajo del atributo aparece una X indicando que el campo se va a presentar en la consulta.

A continuación, haremos lo mismo para los campos primerApellido y segundoApellido. Para terminar en la zona de Especificación de criterios de ordenación, abriremos el cuadro de lista de Orden y seleccionaremos Ascendente en el atributo primerApellido. De esta forma, la ventana de la consulta habrá quedado de esta forma.

consulta alumno

Si ahora selecciona el botón Ejecutar del menú Diseño de consulta se ejecutará la consulta, y mostrará una lista de los alumnos ordenados alfabéticamente por el primer apellido.

Para ver la orden SQL que se ha generado, seleccione la opción Vista SQL en la lista de opciones Ver de la pestaña Inicio. Aparecerá la ventana siguiente.

consulta sql

Comentar que esta sentencia SQL consta de tres partes:

  • Cláusula SELECT: Selecciona los atributos que van a aparecer en la consulta.

  • Cláusula FROM: Especifica el nombre de las tablas que participan en la consulta.

  • Cláusula ORDER BY: Especifica el criterio de ordenación.

Normalmente, después de la cláusula FROM aparece la cláusula WHERE, donde se especifican las condiciones de la consulta, pero en este caso no aparece, ya que no se ha impuesto ninguna condición.

7.2. Creación de una consulta basada en más de una tabla

Supongamos que queremos crear una consulta que muestre cuáles son los nombres y apellidos de los alumnos matriculados en la asignatura Bases de datos.

Para ello, crearíamos una consulta nueva que utilizase las tres tablas de la base de datos, situaríamos los atributos nombre, primerApellido, segundoApellido y asignatura en la zona Campos que participan en la consulta, y escribiríamos Bases de datos en la zona de Especificación de criterios, con lo que la ventana de la consulta sería como la siguiente.

consulta alumno asignatura

Como ha podido observar, al añadir las tablas a la consulta, aparecen de forma automática las relaciones que existen definidas en el diccionario de datos.

Si ejecutamos esta consulta con los datos que cargamos anteriormente obtendremos este resultado

resultado consulta

8. Diseño de formularios basados en subformularios

A menudo suele ser necesario introducir datos sobre una tabla que está relacionada con otra tabla en el esquema de la base de datos (p.e. para una misma empresa introducir todos sus trabajadores sin tener que repetir los datos de la empresa). Veamos cómo se pueden crear formularios que incluyan dentro de sí mismos otros formularios.

La forma de realizar esto es creando dos formularios: el formulario principal, y un subformulario, y una vez que estén creados ambos, ligarlos con los atributos comunes.

Para este caso, vamos a introducir un nuevo ejemplo a partir del anterior, con los profesores que imparten las asignaturas y los departamentos a los que pertenecen los profesores. Los departamentos están constituidos por personal docente e investigador, de forma que cada uno de sus miembros sólo puede pertenecer a un departamento.

La estructura de las tablas sería la siguiente:

Tabla Departamento

Campo Tipo de datos Restricciones

departamento

Texto

Longitud 50. Clave

edificio

Texto

Longitud 50. Requerido

despachoAdministrativo

Texto

Longitud 5. Requerido

telefono

Texto

Longitud 9. Requerido. Ejemplo: 950950950

fax

Texto

Longitud 9. Requerido. Ejemplo: 950950950

Tabla Personal

Campo Tipo de datos Restricciones

NIF

Texto

Longitud 9. Clave. Máscara de entrada: 00000000>L

primerApellido

Texto

Longitud 50. Requerido

segundoApellido

Texto

Longitud 50. Requerido

nombre

Texto

Longitud 50. Requerido

esProfesor

Booleano

---

departamento

Texto

Longitud 50. Requerido

Example 4. Modificación de esquema

Diseñar las estructuras de las tablas según las especificaciones anteriores, crear una relación 1:M entre Departamento y Personal a través del atributo departamento con integridad referencial y que actualice en cascada los campos relacionados. Después, crear un formulario automático para Departamento.

Se puede observar tras la realización del formulario automático para Departamento, que se ha incluido un subformulario para Personal. El conjunto es lo que se conoce como un formulario Maestro-Detalle y permite ver en la parte Detalle los registros relacionados con la parte Maestro. La inclusión automática del formulario detalle se debe a que hay definida en el diccionario de datos una relación 1:M entre Departamento y Personal. En cambio si la relación hubiese sido M:N, o bien, Departamento tuviese más de una relación 1:M con otras tablas del esquema, Access no habría incluido la parte detalle. Además, observamos que la parte de detalle ha sido incluida como una Hoja de datos, en la que no se ha aplicado ningún tipo de formato.

formulario departamento

Guardar los cambios realizados y guardar el formulario con el nombre Departamento.

Por tanto, son varias las circunstancias que nos obligan a conocer cómo incluir un formulario detalle en el formulario Maestro (relaciones M:N, varias relaciones 1:M, proporcionar un formato adecuado al detalle, formularios maestro-detalle-detalle, …). A continuación veremos cómo realizar un formulario Maestro-detalle personalizado.

Supongamos que a partir del formulario Información sobre alumnos queremos incluir datos acerca de las asignaturas en las que está matriculado cada alumno y ver también sus calificaciones. Se trata pues de un formulario maestro-detalle. Vemos los pasos que debemos seguir.

En primer lugar, creamos el subformulario, construyendo una consulta para la parte de detalle (las asignaturas y notas de un alumno) que seleccione los atributos NIF, código, asignatura y nota. El atributo NIF tiene que incluirse porque va a ser el atributo que sirva de vínculo entre el formulario y el subformulario, con lo que al final deberemos tener una consulta similar a esta.

Warning

Para evitar problemas de subíndice fuera de intervalo, seleccionar el código de la tabla Estudia, y no de la tabla Asignatura. Este problema se produce porque Access no permite seleccionar atributos de tablas que no estén relacionadas con la tabla principal.

Note

Cada subformulario, o subinforme, debe tener definida la fuente de datos que representa. Dicha fuente de datos puede ser una de las tablas que forman el esquema de la base de datos, o bien una consulta definida específicamente para el subformulario o subinforme.

subconsulta

Guardaremos esta consulta con el nombre Subconsulta notas.

Para crear el formulario, empezaremos creando un nuevo formulario (el subformulario) con formato Tabular basado en la consulta Subconsulta notas que incluya todos los atributos (más adelante veremos que hay que eliminar del subformulario el atributo NIF). Al nuevo formulario (subformulario) le asignaremos el título Asignaturas de alumno, y será similar al siguiente:

subformulario

A continuación, vincularemos los dos formularios. Para ello, cerramos el subformulario recién creado, abriremos el formulario principal (Alumno) en modo de diseño y desde la sección izquierda de Todos los objetos de Access arrastraremos el subformulario (Asignaturas de alumno) al formulario, y obtendremos algo parecido a lo que se muestra en la ilustración siguiente.

formulario subformulario

A continuación falta comprobar si Access ha establecido la relación entre ambos formularios. Esto lo podemos comprobar viendo las propiedades del subformulario haciendo clic con el botón derecho sobre el subformulario y eligiendo Propiedades. En la sección Datos de la ventana Propiedades hay dos propiedades que especifican la relación entre ambos formularios. Se trata de Vincular campos principales y Vincular campos secundarios. La propiedad Vincular campos principales hace referencia a los campos de parte del formulario principal que se encargan de relacionar la parte principal con la parte de detalle. Por el contrario, la propiedad Vincular campos secundarios hace referencia a los campos de la parte del subformulario que se encargan de relacionar la parte de detalle con la parte principal.

Podemos comprobar como Access ha determinado que la relación entre estos dos formularios puede obtenerse de la relación existente entre sus fuentes de datos subyacentes, en este caso la tabla Alumno y la consulta Subconsulta notas. La figura siguiente ilustra la relación.

relacion formulario subformulario

Si los formularios estuviesen ligados por más de un campo, los campos se separarían por punto y coma. Agrandamos un poco el área del subformulario para que pueda mostrar bien los datos. Después guardamos el formulario y lo abrimos para ver que se ajusta a lo que necesitábamos. La figura siguiente ilustra el formulario y permite ver que muestra las asignaturas de cada estudiante. Al cambiar de estudiante, se muestran las asignaturas del nuevo estudiante seleccionado.

formulario subformulario2

Si ahora desea otro formulario de alumnos por asignaturas debería crear un nuevo formulario basado en subformulario, salvo que en este caso el formulario principal sería el de asignaturas, y el de alumnos sería el secundario. Esta situación suele darse en relaciones 1:M o M:N siempre que se quiera utilizar la tabla de la relación para poder acceder a los registros de la tabla de detalle desde la tabla maestra.

9. Diseño de informes basados en subinformes

El proceso de creación de informes que contengan subinformes es análogo al de creación de formularios que contengan subformularios. Es decir, hay que crear dos informes (el maestro y el detalle), y una vez creados, se abre el informe principal en modo de diseño, y se arrastra el subinforme al informe principal, comprobando la vinculación correcta a través de los atributos que los relacionan. También podemos seleccionar todos los datos y confiar que el asistente para informes haga un buen trabajo…

Example 5. Ejemplo guiado

Crear un informe que muestre los datos del Departamento de Informática y un listado en orden alfabético los nombres de sus profesores.

10. Diseño de una interfaz de ejemplo para la explotación de una base de datos

Para la realización de este supuesto práctico, comentaremos brevemente algunos aspectos que debería tener saber para crear una interfaz de usuario más avanzada.

10.1. Modificación del diseño de un formulario

A menudo, los formularios generados con el asistente no suelen adecuarse completamente a sus necesidades, sino que más bien son una primera aproximación a lo que es el diseño definitivo del formulario. Para modificar el diseño de un formulario, seleccione un formulario y elija Vista diseño en el menú contextual que aparece al hacer clic sobre él con el botón derecho.

El formulario aparece dividido en tres secciones: el encabezado del formulario, la zona de presentación de datos o detalle del formulario, y el pie del formulario. Puede modificar el tamaño de cada una de estas secciones arrastrando la barra inferior que separa cada sección de la siguiente.

Dentro de cada una de estas secciones puede situar y desplazar distintos objetos, que puede encontrar en la sección Controles de la pestaña Diseño del formulario, y en el botón Controles ActiveX, que aparece al final de dicha sección.

En las pestañas Diseño del formulario y Organizar mostradas con un formulario en modo Diseño hay una serie de botones que le permiten cambiar la presentación del formulario, así como modificar el formato de presentación del texto que aparece en el formulario. Además, hay botones que le permiten ver las propiedades del objeto seleccionado y ver la tabla o consulta en la que está basado el formulario.

En la sección Controles puede encontrar una serie de botones para la creación de controles, como son etiquetas, cuadros de edición, cuadros de lista desplegables, botones de orden, botones de opción, casillas de verificación, etc, y el botón Utilizar asistentes para controles. Si este último botón está pulsado, el proceso de definición del objeto y la asignación de algunas propiedades es guiado por un asistente.

10.2. Creación de un botón de orden

En el modo de diseño de formularios, puede insertar un botón de orden para que se realice una acción (p.e. abrir un formulario basado en una consulta).

Para ello, asegúrese de que el botón Utilizar Asistentes para controles de la caja de herramientas está pulsado y pulse el botón Botón (control de formulario).

Cree un formulario nuevo en blanco (Botón Formulario en blanco del menú Crear) y sitúe un botón de orden en el formulario. A continuación se iniciará el asistente que asigna una acción al botón.

En el primer paso del asistente aparecen dos zonas en las que las órdenes que se pueden realizar están clasificadas por categorías (izquierda) y las órdenes (derecha). Seleccione la orden Abrir formulario de la categoría Operaciones con formularios, y a continuación pulse Siguiente.

boton orden

En el segundo paso del asistente seleccione el nombre del formulario que desea que se abra cuando pulse el botón de orden. En este ejemplo, seleccione el formulario Información sobre alumnos y a continuación pulse Siguiente. El cuadro de diálogo siguiente le pide que indique si desea presentar todos los registros o sólo algunos. Deje activada la opción de mostrar todos los registros.

boton orden2

A continuación, el asistente presenta un cuadro de diálogo para que seleccione una imagen para el botón, o bien para que escriba el texto que desea que aparezca en el botón. Escriba Información sobre alumnos en el cuadro de edición que está al lado del botón de opción Texto, y luego pulse el botón Siguiente.

boton orden3

Por último, aparece un cuadro de diálogo para que asigne un nombre, si lo desea, al botón, poder referenciarlo para mediante código, y permitirle además abrir las fichas guía para comentarle algunos ejemplos sobre botones de orden. Pulse Finalizar.

boton orden4

Si ahora guarda y muestra este formulario en el modo de formulario y pulsa el botón de orden, verá cómo se abre el formulario Información sobre alumnos. Este tipo de formularios se podrá utilizar, por ejemplo, en formularios que presenten una serie de botones para realizar distintas acciones, o para acceder a distintos formularios en función de la información presentada en un formulario.

10.3. Utilización de cuadros combinados para la especificación de parámetros en una consulta

Hasta ahora las consultas que hemos realizado, sólo se limitan a seleccionar registros de una tabla o de un conjunto de tablas que satisfacen un criterio predeterminado y a presentar algunos campos, pero no hemos creado ninguna consulta que utilice parámetros introducidos por el usuario para ejecutar la consulta. En este ejemplo vamos a ver cómo se podría generar una consulta que tome como parámetro un valor que el usuario seleccione de un cuadro combinado, en la que se muestren cuáles son los alumnos matriculados en una asignatura.

Para ello, en el formulario en blanco que acabamos de crear, crearemos un cuadro combinado que muestre los valores posibles de los parámetros de la consulta. El control de cuadro combinado lo puede encontrar en la caja de herramientas. Con el formulario en vista de diseño, pulse el botón Cuadro combinado y sitúelo en el formulario creado anteriormente, asegurándose de que el botón Utilizar Asistentes para controles está pulsado.

Esto iniciará el asistente y presentará el primer cuadro de diálogo para indicar cuál es el origen de los datos del cuadro combinado (una tabla o consulta, o escribir los valores predeterminados). Pulse el botón de opción Deseo que el cuadro combinado busque los valores en una tabla o consulta, y a continuación pulse Siguiente.

cuadro combinado

El segundo cuadro de diálogo le pide que seleccione la tabla o consulta donde se encuentra el atributo que desea que aparezca en el cuadro combinado. Para este caso seleccione la tabla Asignatura, y a continuación pulse el botón Siguiente.

cuadro combinado2

El cuadro de diálogo siguiente presenta los atributos disponibles de la tabla o consulta seleccionada y le pide que seleccione cuál es el atributo que se va a incluir en el cuadro combinado. Seleccione el atributo asignatura y pulse el botón > para situarlo en la parte derecha. Por último, pulse el botón Siguiente.

cuadro combinado3

Los siguientes cuadros de diálogo se utilizan para especificar el orden de los valores, el ancho del cuadro combinado y para la asignación de un título para aclarar el contenido del cuadro combinado (p.e. Asignatura:).

Una vez que haya creado el cuadro combinado, especificaremos un nombre para poder hacer referencia a él de una forma clara. Para ello, con el cuadro combinado seleccionado, mostrar la Hoja de propiedades haciendo clic con el botón derecho y seleccionando Propiedades en el menú contextual. En la pestaña Otras de la Hoja de propiedades, cambie la propiedad Nombre a Asignatura (su nombre predeterminado será algo similar a Cuadro_combinado_xx)

Antes de terminar hay que modificar tres propiedades más del cuadro combinado, ya que cuando Access crea un cuadro combinado sobre un campo que no es la clave primaria, añade automáticamente los atributos de la clave a la consulta. Esto puede presentar problemas, ya que nosotros queremos realizar la comparación de la consulta con el valor del nombre de la asignatura, y no con el valor de la clave. (Si quisiéramos haber hecho esto lo habríamos hecho nosotros mismos.) Por tanto, en la propiedad Origen de la fila de la pestaña Datos de la Hoja de propiedades, deje el siguiente valor: SELECT DISTINCT [Asignatura].[asignatura] FROM [Asignatura]; (Se elimina la presentación del código de la asignatura).

Las otras dos propiedades que hay que modificar están en la pestaña Formato y son las propiedades Número de columnas, cuyo valor será 1 (el número de columnas que se presentan es uno, la asignatura), y la otra es la propiedad Ancho de columnas que será de 2,54, ya que el primer valor hacía referencia al ancho de la columna que acabamos de eliminar.

Note

Otra posibilidad habría sido modificar únicamente la propiedad Columna dependiente, que indica cual es el campo devuelto por el cuadro combinado en el caso de que tenga varias columnas. Introduciendo el valor 2 en esta propiedad, no será necesario modificar las tres propiedades que acabamos de comentar en este caso. Sin embargo, no optaremos por esta opción, sino por corregir lo que ha creado el asistente al crear un cuadro combinado sobre una columna de una tabla que no es clave primaria.

Una vez creado el cuadro de lista que presenta la lista de todas las asignaturas disponibles, hay que crear la consulta (p.e, Alumnos de una asignatura), teniendo en cuenta que el criterio para la selección de registros es que el atributo Asignatura de la tabla Asignaturas sea igual que el valor del cuadro combinado Asignatura. En la fila Criterios de la consulta, introduciremos el criterio siguiente en la columna del atributo Asignatura, dando por hecho que el formulario donde está el cuadro combinado se ha guardado con el nombre Menu:

Formularios!Menu!Asignatura

Esa expresión representa el nombre completo del objeto situándolo en el formulario en el que está definido. La sintaxis genérica para hacer referencia a un cuadro combinado creado en un formulario sería la siguiente:

Formularios![Nombre formulario]![Nombre cuadro combinado]

Para terminar, añada un botón de orden al formulario de prueba, para que al pulsarlo se ejecute esta consulta.

Las figuras siguientes muestran el formulario de menú para seleccionar una asignatura. El formulario incluye un botón que llama a la consulta mostrando los datos correspondientes.

formulario menu
formulario menu2
Example 6. Creación de formulario e informe para departamentos y profesores

A partir de las tablas de Departamento y Profesor que ya tiene creadas:

  • Crear un formulario para la mostrar los profesores de un departamento. Este formulario se mostrará al pulsar un botón de orden, en el que el departamento se introduzca mediante un cuadro combinado.

  • Análogamente, crear un informe en modo de presentación preliminar para la presentación de todos los departamentos de un edificio mediante la pulsación de un botón de orden, en el que el edificio se introduzca mediante un cuadro combinado.

10.4. Creación de formularios con condiciones de filtrado

Es muy habitual tener que crear formularios que muestren los datos que cumplen una condición determinada. Normalmente, implementaremos estos formularios creando previamente una consulta que muestre los registros que cumplen la condición, y a continuación creamos un formulario basado en esta consulta. Sin embargo, cuando los datos a mostrar procedan de una única tabla, y la condición de filtrado sea muy simple (p.e. una comparación de igualdad en un solo campo para mostrar el personal de un departamento determinado), podemos aprovechar la funcionalidad de Access de crear formularios que permitan filtrar los registros de una tabla en función de una condición determinada. Si esta funcionalidad la combinamos ahora con la de un cuadro combinado en el que previamente se haya seleccionado el departamento, podremos crear un formulario que muestre el personal de un departamento determinado partiendo de un formulario de departamento, y sin necesidad de crear una consulta previa. Veamos cómo hacerlo.

En el formulario Menú crearemos un cuadro combinado que muestre los departamentos disponibles. Este cuadro combinado tomará los valores de la tabla Departamento, que es donde están almacenados todos los departamentos disponibles. Llamaremos departamento al cuadro combinado.

Para el formulario de personal, usaremos directamente uno que tengamos creado previamente. Si no se cuenta con ninguno, a modo de ejemplo valdría un autoformulario sobre la tabla Personal. Este sería un ejemplo de autoformulario en el que se ha sustituido el cuadro de texto del campo departamento por un cuadro combinado que toma los valores de la tabla Departamento. Para crear dicho cuadro combinado basta con tomar como campo del cuadro combinado el campo departamento de la tabla Departamento, y luego indicar que ese valor se desea almacenar en el campo departamento de la tabla Personal.

autoformulario personal

A continuación, crearemos en el formulario Menu un botón que se encargará de abrir el formulario Personal prestando atención a lo siguiente. En uno de los pasos del asistente indicaremos que el formulario Personal se abra con un filtro, de forma que sólo se muestren los registros que cumplan la condición de que el campo departamento del formulario sea igual al valor seleccionado en el cuadro combinado departamento. La figura siguiente ilustra el paso en el que se indica que el formulario se abra con un filtro.

boton filtro

En el siguiente paso del asistente, se indican las condiciones de filtrado. La figura siguiente ilustra este paso. En la parte izquierda se indican los campos del formulario Menu desde el que se especifica el filtro, y en la parte derecha los campos del formulario Personal que se filtran. En este caso, se filtra el campo departamento del formulario Personal por el valor del cuadro combinado departamento del formulario Menu.

filtro

Tras finalizar la creación del botón, el formulario Menu se abrirá con un cuadro combinado que muestra los departamentos disponibles. Al seleccionar un departamento y pulsar el botón, se abrirá el formulario Personal mostrando sólo los registros que cumplen la condición de que el campo departamento sea igual al valor seleccionado en el cuadro combinado. La figura siguiente ilustra el personal del departamento de Informática. Destacar que en la parte inferior del formulario aparece una indicación Filtrado indicando que se están mostrando sólo los registros que cumplen la condición de filtrado.

filtro personal

Por último, es interesante ver en la ventana de Propiedades con el formulario en modo de diseño, la propiedad Filtro de la pestaña Datos. En esta propiedad se puede ver la condición de filtrado que se ha aplicado al formulario. En este caso, la condición de filtrado es la siguiente:

[departamento]='Informática'

Esta condición de filtrado se ha creado automáticamente al crear el botón de orden que abre el formulario Personal con un filtro.

11. Conclusiones

En este tutorial se han explorado algunas capacidades básicas de Microsoft Access como herramienta para el diseño y desarrollo de bases de datos relacionales. A través de ejemplos prácticos, se muestra cómo definir tablas, establecer relaciones, crear consultas, formularios e informes, y a diseñar interfaces de usuario que permiten explotar de manera eficiente los datos almacenados.

Microsoft Access no solo facilita la gestión de datos, sino que también fomenta el aprendizaje de conceptos fundamentales de bases de datos, como la integridad referencial y las relaciones entre tablas. Además, su interfaz gráfica intuitiva permite a los usuarios centrarse en el diseño lógico y funcional de sus aplicaciones sin necesidad de conocimientos avanzados de programación.

Este tutorial también ha demostrado cómo Access puede ser una herramienta a tener en cuenta para automatizar tareas repetitivas mediante macros, y cómo se pueden personalizar formularios e informes para adaptarlos a necesidades específicas. Estas habilidades son esenciales en el desarrollo de aplicaciones de bases de datos.

Licencia

Licencia CC BY-NC-ND 4.0

Copyright (c) 2025 [Manuel Torres - Departamento de Informática - Universidad de Almería]

Este proyecto está licenciado bajo la Licencia CC BY-NC-ND 4.0. Esto significa que puedes compartir el proyecto siempre que cites al autor, no lo uses para fines comerciales y no realices obras derivadas.