Microsoft Access Avanzado

Corpus Ruiz Fernández Coordinación de Informática

DIRECCIÓN PROVINCIAL DE LA TGSS DE CIUDAD REAL ------------------------------------------------------------------------------------

Curso del 4 al 5 de julio de 2007

Access Avanzado 2003 



Corpus Ruiz Fernández 

Índice

Introducción ................................................................................................................................... 7 Access es un Sistema Gestor de Base de Datos (SGBD) ........................................................ 9 Concepto de tablas, campos y registros ................................................................................. 10 Tipos de datos y su aplicación................................................................................................. 10 Campo clave ............................................................................................................................ 11 Estructura de un fichero Access .............................................................................................. 12 Diseño del proyecto de Base de Datos ....................................................................................... 13 Mi primera base de datos ........................................................................................................ 15 Ventana de Localidad.mdb .................................................................................................. 16 Breve descripción de cada uno de los objetos .................................................................... 17 Crear la tabla Localidad ....................................................................................................... 18 Establecer la clave principal................................................................................................. 19 Guardar la tabla ................................................................................................................... 19 Estudio previo de la información a introducir........................................................................... 19 Tablas y campos necesarios................................................................................................ 20 Tipo de relaciones................................................................................................................ 20 Relación entre la tabla Localidad y la tabla Funcionario ..................................................... 22 Relación entre la tabla Funcionario y la tabla Curso ........................................................... 22 Resumen de nuestro supuesto ............................................................................................ 22 Vincular tablas de otra base de datos.................................................................................. 23 Crear la tabla Funcionario.................................................................................................... 24 Relacionar las tablas Funcionario y Localidad..................................................................... 25 Integridad referencial ........................................................................................................... 28 Ejercicios.................................................................................................................................. 30 Consultas..................................................................................................................................... 32 3 

Access Avanzado 2003 

Introducción ............................................................................................................................. 34 Tipos de consultas................................................................................................................... 34 Creación de mi primera consulta ............................................................................................. 34 Consulta en más de una tabla ................................................................................................. 37 Crea un campo calculado con una consulta............................................................................ 39 Formularios.................................................................................................................................. 42 Introducción ............................................................................................................................. 44 ¿Cómo se construyen?............................................................................................................ 44 Los controles............................................................................................................................ 45 Formas de crear formularios.................................................................................................... 46 Nombre que se le van a dar a los formularios......................................................................... 46 Creación de formularios mediante el asistente ....................................................................... 47 El formulario GestionSolicitud.................................................................................................. 47 El formulario Solicitud .............................................................................................................. 51 Agregar un campo a un formulario ...................................................................................... 52 Orden de tabulación............................................................................................................. 53 Establecer controles como de sólo lectura .......................................................................... 53 Evitar aprender códigos ....................................................................................................... 54 Propiedades de un formulario .............................................................................................. 58 Hacer referencia a los controles de un formulario o informe................................................... 59 Exportar registros utilizando el Filtro por formulario ................................................................ 60 Ejercicios.................................................................................................................................. 63 Subformularios ............................................................................................................................ 65 Introducción ............................................................................................................................. 67 Repaso de lo hecho hasta ahora............................................................................................. 67 Crear formulario y subformulario al mismo tiempo.................................................................. 68 Crear subformularios basado en consultas ............................................................................. 70 Consulta del formulario principal: ConFuncionario.................................................................. 70 Consulta del subformulario: ConSubCurso ............................................................................. 71 El formulario principal Funcionario .......................................................................................... 72



Corpus Ruiz Fernández 

El subformulario SubCurso...................................................................................................... 73 Insertar el subformulario en el formulario principal.................................................................. 75 Función de nuestros formularios en el proyecto...................................................................... 76 Ejercicios.................................................................................................................................. 79 Macros......................................................................................................................................... 81 Introducción ............................................................................................................................. 83 Crear botones en Funcionario.............................................................................................. 83 Crear un macro........................................................................................................................ 85 Grupo de macros ..................................................................................................................... 86 El grupo Funcionario................................................................................................................ 86 Macro Añadir ........................................................................................................................ 87 Macro Modificar.................................................................................................................... 87 Macro Buscar ....................................................................................................................... 88 Resumen .............................................................................................................................. 90 El grupo Curso ......................................................................................................................... 90 El grupo Solicitud..................................................................................................................... 90 Macro Exportar..................................................................................................................... 91 Macro Imprimir ..................................................................................................................... 92 Resumen .............................................................................................................................. 94 El grupo Comun ....................................................................................................................... 94 Macro Funcionario ............................................................................................................... 94 Macro Curso......................................................................................................................... 94 Macro Solicitud..................................................................................................................... 95 Macro Aceptar...................................................................................................................... 95 Formulario Curso ..................................................................................................................... 97 Formulario Funcionario............................................................................................................ 98 Formulario Solicitud ................................................................................................................. 99 Formulario GestionCurso....................................................................................................... 100 Formulario GestionFuncionario ............................................................................................. 101 Formulario GestionSolicitud................................................................................................... 102



Access Avanzado 2003 

Formulario SubCurso............................................................................................................. 103 Formulario SubFuncionario ................................................................................................... 104 ANEXO DE LAS ACCIONES MÁS UTILIZADAS.................................................................. 105 Ejercicios................................................................................................................................ 107 INFORMES................................................................................................................................ 109 Introducción ........................................................................................................................... 111 Formas de crear un informe .................................................................................................. 111 Crear informe con ayuda del asistente.................................................................................. 111 Elementos de un informe....................................................................................................... 114 Secciones principales ........................................................................................................ 114 Opciones en un informe ..................................................................................................... 115 Agregar campos u otros controles a un informe existente .................................................... 115 Agregar campos a un informe existente ............................................................................ 115 Agregar o modificar el agrupamiento y la ordenación ........................................................... 116 El informe Listado Cursos...................................................................................................... 116 Filtrado de datos en un informe ............................................................................................. 118 El informe Listado funcionarios ............................................................................................. 120 Forzar nueva página en cada encabezado de grupo ........................................................ 121 Filtrar los datos del informe desde el formulario Solicitud ................................................. 122 Creación de etiquetas postales ............................................................................................. 122 Creación de un formulario desde el panel Impresoras y faxes.......................................... 123 Acuses de recibo para impresoras matriciales .................................................................. 123 Acuses de recibo para impresoras láser............................................................................ 126



Corpus Ruiz Fernández 

Introducción



Access Avanzado 2003 



Corpus Ruiz Fernández 

Microsoft Access es un programa para la gestión de información que diseña las estructuras para almacenar la información y los medios para su introducción y explotación. Para explicar este propósito general de Access, se introducen primero los conceptos principales de las bases de datos, comenzando por el mismo concepto de base de datos. Se comienza con el concepto de base de datos compuesta de tablas con estructura plana (todos los datos se encuentran en una tabla y son más difíciles de gestionar) para pasar a diseñar bases de datos compuestas de varias tablas entre las que existe una relación (estructura relacional). La versión de Access que se va a presentar es la 2003 para Windows y el alumno, al finalizar el curso, será capaz de realizar aplicaciones de bases de datos que relacionen varias tablas, generando formularios e informes enlazados mediante macros para, así, generar una interfaz de usuario sencilla y completa. A la vez que se da la teoría iremos creando una aplicación que al final sea capaz de gestionar las solicitudes de los Cursos de Formación. El curso está dirigido a todos los trabajadores de la Dirección Provincial del INSS ó TGSS que, conociendo el Gestor de Base de Datos Microsoft Access –a partir de ahora Access- desea profundizar en el programa hasta un nivel más alto.

Access es un Sistema Gestor de Base de Datos (SGBD) Un software específico dedicado a servir de intermediario entre la base de datos, el usuario y las aplicaciones que la utilizan y gestiona información se denomina un sistema de gestión de bases de datos SGBD ó DBMS (Data Base Management System). La estructura básica de esta información son tablas. Para una mejor gestión de la información y para reducir el número de datos, las tablas se relacionan. Por ejemplo, si se desean tener un listado de los cursos solicitador por los funcionarios, en vez de incluir el nombre y apellidos en cada una de las solicitudes, bastará con almacenar los números del DNI en cada curso. El número de DNI sirve para establecer una relación con la tabla que contiene el nombre y los apellidos. Debido a este carácter relacional, Access es un sistema de gestión de bases de datos relacional SGBDR ó RDBMS (Relational

Data Base Management System).

Si se hubiese utilizado sólo una tabla, al añadir los registros hubiera sido necesario introducir varias veces el nombre y apellido de la persona que lo ha solicitado, almacenándose información redundante, pudiendo cometerse errores como se muestra en la siguiente tabla. 9 

Access Avanzado 2003 

Concepto de tablas, campos y registros La información se almacena en tablas. Cada una de ellas tiene que tener un nombre único en la Base de Datos y están compuestas por filas (llamadas registros) y columnas (llamadas campos). En el ejemplo anterior, la base de datos está formada por dos tablas: ˆ

Funcionario: Contiene información sobre los funcionarios, consta de 2 campos (DNI y

Nombre y apellidos) y 1 registro. ˆ

Curso: Contiene información sobre los cursos, consta de 3 campos (Código curso,

nombre curso y DNI) y 3 registros. Por tanto, una base de datos contiene tablas que se utilizan para gestionar un determinado tipo de información. Ejemplos de base de datos son: ˆ

Base de datos para la gestión de los cursos de nuestra Dirección Provincial.

ˆ

Base de datos que gestionan los ingresos en un hospital.

ˆ

Base de datos que gestionan los pedidos de una empresa.

Tipos de datos y su aplicación En Access se usa la propiedad Tipos de datos para especificar el tipo de datos almacenado en un campo de una tabla. Cada campo sólo puede contener datos de un tipo. Dicha propiedad puede tener los valores siguientes: Tipo

Pueden contener…

Tamaño

Texto

Caracteres alfanuméricos –cualquier carácter del teclado. Los números no pueden usarse en operaciones aritméticas.

El tamaño por defecto es 50 y el máximo 255

Memo

Cualquier carácter del teclado y se usa para almacenar grandes cantidades de información. Un ejemplo de este tipo de campo sería un campo de sugerencias o comentarios.

Hasta 65.534 caracteres.

Numérico

Datos numéricos utilizados para cálculos matemáticos. Pueden ser enteros o reales.

De diferentes longitudes

Fecha/hora

Valores de fecha y hora para los años 100 al 9999.

8 bytes

Moneda

Números enteros o fraccionarios (como máximo de 4 decimales).

8 bytes

Autonumérico

Número secuencial único que Access asigna cada vez

4 bytes

10 

Corpus Ruiz Fernández 

que se añade un registro a una tabla. Booleano (Sí/No)

Sólo dos valores: Sí o No.

1 bit

Objeto OLE

Objeto (como documento Word, imágenes…) vinculado o incrustado en una tabla.

Hasta 1Gb

Hipervínculo

Dirección de página web, de correo electrónico o de un archivo en el disco local.

2048 caracteres

Asistente para búsquedas

Crea un campo que permite elegir un valor de otra tabla o de una lista de valores mediante un cuadro de lista o cuadro combinado.

Igual al campo utilizado para realizar la búsqueda

El campo por omisión es de tipo Texto, ya que en él se puede almacenar cualquier carácter. Si lo que queremos es almacenar bastante texto, debemos elegir el campo tipo Memo. Por otro lado, cuando vayamos a introducir datos de tipo numérico elegiremos entre Numérico o Texto, dependiendo si deseamos realizar operaciones matemáticas con ellos o no, respectivamente. El campo Autonumérico lo podemos utilizar para numerar los registros automáticamente según los vamos introduciendo en la tabla. Cuando el campo sólo pueda contener una afirmación o una negación usaremos el tipo Sí/No – tipo de datos booleano. Por último, tenemos los campos Fecha/hora que sirven para introducir fechas y horas en diferentes formatos; el campo Moneda que utiliza un máximo de 4 decimales y añade el tipo de moneda especificada, y el campo ObjetoOLE que nos puede servir para insertar cualquier objeto OLE compatible en Windows, como puede ser una hoja de cálculo, una carta, una imagen, un gráfico, etc. Se recomienda especificar el valor más pequeño posible en la propiedad Tamaño del campo, pues los tamaños más pequeños pueden procesarse más rápidamente y requieren menos memoria.

Precaución: Si cambia un valor de Tamaño del campo grande por otro más pequeño para un campo que ya contiene datos, es posible que pierda información. Por ejemplo, si un campo de tipo Texto tiene el valor 255 en Tamaño del campo y lo cambia por 50, los datos que se extiendan más allá de los 50 primeros caracteres se perderán. Si los datos de un campo de tipo Numérico no caben con un nuevo valor de Tamaño del campo, los números fraccionarios se pueden redondear, o pueden dar el valor Nulo. Por ejemplo, si cambia el tamaño de campo de Simple a Entero, los valores fraccionarios se redondearán al número entero más cercano, y los superiores a 32.767 o inferiores a -32.768 serán reemplazados por valores nulos. No es posible deshacer los cambios en los datos provocados por una modificación de la propiedad Tamaño del campo después de haberlos guardado en la vista Diseño de la tabla.

Campo clave En cada una de las tablas de una base de datos relacional debemos de tener al menos un campo o varios cuyo valor sea único e identifique unívocamente a cada registro de la tabla. Por ejemplo, en nuestro caso de la gestión de los cursos, las tablas funcionario y curso tienen un campo clave (DNI y Código curso respectivamente).

11 

Access Avanzado 2003 

En el caso de que no podamos encontrar un campo clave se añade a la tabla un campo de tipo Autonumérico o bien podemos elegir varios campos como la clave de la tabla.

Estructura de un fichero Access Como se explica más adelante en este documento, una base de datos consta de distintos objetos: tablas, consultas, relaciones, informes, formularios, etc. Todos los objetos de una base de datos se almacenan físicamente en un sólo fichero. Por ello en Access, se identifica una base de datos con el fichero en el que se almacena. Este fichero tiene la extesión mdb. Esta estructura de ficheros de Access es propia de esta aplicación. Otros formatos de base de datos utilizan otros criterios. Por ejemplo los ficheros dBase de Lotus Approach utilizan un fichero para cada tabla con extensión dbf. Información: Siempre que una base de datos mdb se encuentre abierta, en la misma carpeta de la base de datos se crea como archivo temporal de trabajo otro archivo con el mismo nombre que la base de datos pero extensión ldb. Este archivo es eliminado de forma automática al ser cerrada la base de datos. Existe mientras la base de datos está en uso.

12 

Corpus Ruiz Fernández 

Diseño del proyecto de Base de Datos

13 

Access Avanzado 2003 

14 

Corpus Ruiz Fernández 

A partir de aquí vamos a ir desarrollando la teoría con un ejercicio práctico –Mi proyecto- que consistirá en diseñar una base de datos que sea capaz de gestionar las solicitudes de los Cursos de Formación de la Dirección Provincial. Empezaremos creando nuestra primera tabla –Localidad- para almacenar el código postal y el pueblo del funcionario que presenta la solicitud. Veremos los distintos tipos de objetos que aparecen en una base de datos y otros conceptos básicos como clave principal, clave ajena e integridad referencial e insistiremos en lo importante que es un buen diseño de una base de datos y el establecimiento de las relaciones entre las diferentes tablas que componen nuestro proyecto de Base de Datos. Al final de cada tema se propone unos ejercicios para evaluar si se ha comprendido todos estos conceptos.

Mi primera base de datos Para crear una sencilla base de datos -Localidad.mdb- que contenga información sobre las localidades de la provincia de Ciudad Real una vez iniciada una sesión de Access, los pasos a seguir son:  Hacer clic en Base de datos en blanco, del Panel de tareas.

Nota: Si no aparece el panel de tareas, hacer clic en Ver Î Panel de tareas.

 En el cuadro de diálogo que aparece se elige la ubicación exacta del archivo que se va a crear y el nombre que va a recibir (en nuestro caso Localidad.mdb). Si bien Access otorga por defecto el nombre bd1.mdb y lo ubica en la carpeta Mis Documentos. Finalizar haciendo clic en Crear. 15 

Access Avanzado 2003 

Ventana de Localidad.mdb La ventana de la base de datos Localidad.mdb que acabamos de crear es la que se muestra en la figura siguiente:

y presenta los siguientes elementos: ˆ

Barra de títulos: En la parte superior de la ventana. Muestra el nombre de la base de

datos en la que se está trabajando junto con los botones Minimizar, Restaurar-Maximizar y Cerrar.

ˆ

Barra de botones: Situada debajo de la barra de títulos, permite crear nuevos objetos

y abrir o visualizar los ya creados.

16 

Corpus Ruiz Fernández 

ˆ

Panel de objetos: Situado a la izquierda, en él aparece una botonera con los

diferentes objetos que puede tener una base de datos. Para ir de una a otra hacemos clic en el nombre del objeto.

ˆ

Ventana del documento: A la derecha del panel de objetos, presenta el nombre de

todos los objetos que han sido creados –en nuestro caso ninguno ya que todavía la base de datos está vacía- y los asistentes para crearlos.

Breve descripción de cada uno de los objetos ˆ

Tablas: Principal objeto de la base de datos donde se almacena la información,

estructurada en registros y campos. ˆ

Consultas: Permite realizar una operación sobre la base de datos para seleccionar,

modificar, insertar ó borrar registros según un criterio. Las consultas se pueden realizar sobre una o varias tablas. ˆ

Formularios: Es una ventana diseñada para la introducción y edición de datos de una

o varias tablas. Permite introducir, modificar, consultar y borrar los registros de la tabla o consulta para la que se ha diseñado. La ventaja frente a la presentación como hoja de datos es que los campos se presentan de forma más adecuada al usuario, con un diseño que ayuda a su comprensión, utilizando los controles más adecuados a cada tipo de información. ˆ

Informes: Si el formulario es idóneo para introducir y editar los datos, la mejor forma de

mostrarlos es mediante un informa en una página impresa o su presentación en la pantalla del ordenador. Access proporciona herramientas para diseñar informes con gran flexibilidad y posee funciones para agrupar registros y mostrar totales y subtotales de los campos deseados. ˆ

Macros: Son conjunto de acciones que realizan una operación determinada, como

abrir un formulario o imprimir un informe. Las macros pueden ayudar a automatizar las tareas comunes, como imprimir un informe cuando el usuario pulsa un botón.

17 

Access Avanzado 2003 

ˆ

Módulos: Conjunto de declaraciones y procedimientos de Visual Basic. No se verán en

el curso ya que está dirigido a los programadores. ˆ

Páginas: Para crear páginas Web que se puedan utilizar para ver, agregar, modificar o

borrar datos actuales de una base de datos de Access. Igual que los formularios pero a través de navegadores de Internet. Orientado a programadores para presentar los formularios vía Internet o Intranet.

Crear la tabla Localidad Para crear una tabla tenemos que posicionarnos en la ventana base de datos con el objeto Tablas seleccionado y hacer clic en el icono

de la barra de botones. Se abrirá una

ventana con las distintas formas para crear una tabla:

De ellas, elegiremos Vista Diseño que será el método que utilizaremos. Otra forma de crearla sería haciendo clic sobre el icono

. Aparecerá la ventana Diseño de tabla desde la que

se teclea el nombre de los campos, se selecciona el tipo de datos del campo y –opcionalmentese indica una descripción para cada campo:

18 

Corpus Ruiz Fernández 

En la parte inferior de cada campo tenemos la ficha General para definir propiedades del campo como por ejemplo: Código

CP

Nombre

Tamaño del campo 1

Entero

Entero

30

Formato 2

00000

00000

Título 3

Código del pueblo

Código Postal

Lugares decimales

0

0

Requerido 4







Indexado 5

Sí (Sin duplicados)

Si (Con duplicados)

No

Localidad

Establecer la clave principal Antes de guardar la tabla tendremos que definir el campo Codigo como clave principal (el único que nos sirve para identificar los registros. No podemos elegir como clave principal el campo CP ya que hay pueblos que tienen el mismo Código Postal) eligiéndolo y haciendo clic en el icono clave principal

de la barra de herramientas. A la izquierda del nombre del

campo aparecerá una llave indicándonos que dicho campo es clave principal de la tabla.

Guardar la tabla Por último, se guarda la tabla haciendo clic sobre el icono

y se escribe el nombre de la tabla

–en nuestro ejemplo, Localidad. Nota: Si no hubiéramos asignado clave principal a la tabla, al salir del modo diseño aparecería un cuadro de diálogo avisándonos de ello y preguntándonos si queremos que Access cree una. Si decimos que Sí, se añade un campo Autonumérico a la tabla y lo define como clave principal, si decimos No se guarda la tabla sin clave principal.

Ya podemos empezar a introducir datos haciendo doble clic en la tabla Localidad.

Estudio previo de la información a introducir Antes de crear una base de datos debemos pensar bien el diseño de la misma, pues una vez creada y con datos introducidos, es más difícil modificarla. 1

2 3 4 5

Depende del tipo de dato: ˆ

Texto: Puede tomar valores entre 0 y 255.

ˆ

Numérico: Entero, por lo que almacena números del -32768 al 32767.

Para personalizar la forma en que los números, fechas, horas y texto se muestran e imprimen. La etiqueta para el campo cuando se utiliza para un formulario. Hacer obligatoria o no la entrada de datos en el campo. Un índice para acelerar las búsquedas y ordenamientos en un campo.

19 

Access Avanzado 2003 

Lo primero que debemos hacer es determinar la finalidad de la base de datos y las tablas que va a contener. En segundo lugar, debemos distribuir toda la información por campos, de forma que cada campo corresponda a una tabla y que la información no se encuentre duplicada ni dentro de una tabla ni en tablas diferentes. Por último, determinaremos las relaciones entre las diferentes tablas. Cada uno de estos pasos lo vamos a hacer partiendo de un supuesto básico: Una base de datos que gestiona los cursos de formación de la Dirección Provincial:

Tablas y campos necesarios Desde que el funcionario solicita el curso hasta que salen los listados de los admitidos ha sido necesario recoger una serie de información –DNI, nombre y apellidos, nombre de los cursos, etc… Toda esta información podemos recogerla en dos tablas: ˆ

Tabla Funcionario: Con información relativa sobre quienes van a realizar los cursos.

ˆ

Tabla Curso: Con información relativa a los cursos.

Tipo de relaciones Las relaciones entre tablas se hacen a través de sus claves principales. La clave principal de la tabla Funcionario es el DNI y de la tabla Curso el Código por ser los campos que identifican a cada uno de los registros. Las relaciones posibles entre tablas pueden ser: ˆ

Uno a uno: Cada registro de una de las tablas está relacionado con uno y sólo un

registro de la otra tabla. Un ejemplo sería la relación entre la tabla Sección y la tabla Jefe, ya que en una sección sólo puede haber un jefe y cada jefe sólo puede serlo de una sección.

20 

Corpus Ruiz Fernández 

ˆ

Uno a varios: Cada registro de una de las tablas está relacionado con uno o varios

registros de la otra tabla. Un ejemplo sería la relación entre la tabla Funcionario y la tabla Localidad, donde en una localidad pueden vivir uno o más funcionarios y un funcionario sólo puede vivir en sólo una localidad.

ˆ

Varios a varios: Cada registro de una tabla está relacionado con uno o más de la otra

tabla y cada registro de ésta con uno o varios registros de la otra.

21 

Access Avanzado 2003 

Por tanto, nuestro ejemplo corresponde a una relación de varios a varios. Vamos a ver que hay que hacer con las claves de las tablas en cada uno de los tipos de relaciones:

Relación entre la tabla Localidad y la tabla Funcionario Esta relación, como vimos, es de uno a varios. Lo que se hace, en este caso, es añadir a la tabla Funcionario la clave de la tabla Localidad –El Codigo del pueblo ya que, como sabemos, el Código Postal se repite en algunos pueblos.

Al campo CodigoPueblo de la tabla Funcionario se le llama clave ajena.

Relación entre la tabla Funcionario y la tabla Curso Dicha relación es de varios a varios. Cuando la relación es de este tipo, lo que se hace es crear otra tabla intermedia –Solicitud- con las claves de las dos tablas (DNI de la de Funcionario y Código de la tabla Curso). Además, de una solicitud nos interesa, por ejemplo, la fecha de entrada y la fecha en la que empieza el curso, por lo que podemos añadir dos campos más a la tabla Solicitud.

Resumen de nuestro supuesto Al final, las relaciones que se han establecido en nuestro proyecto quedaría así:

22 

Corpus Ruiz Fernández 

1

Clave principal de la tabla Localidad

Localidad.Codigo

2

Clave principal de la tabla Funcionario

Funcionario.DNI

3

Clave ajena de la tabla Funcionario

Funcionario.CodigoPueblo

4

Clave ajena de la tabla Solicitud

Solicitud.DNI

5

Clave ajena de la tabla Solicitud

Solicitud.CodigoCurso

6

Clave principal de la tabla Curso

Curso.Codigo

La clave principal de la tabla Solicitud sería la combinación de los campos DNI, CodigoCurso y FechaCurso. Así que tendremos que crear 4 tablas con sus respectivos campos cada una, indicando de qué tipo son. Como ya hemos creado la tabla Localidad en la base de datos Localidad.mdb -que posiblemente la utilizaremos en otras bases de datos que tengamos o vayamos a crear-, en vez de crear en nuestro proyecto nuevamente la tabla Localidad optaremos por vincular la que ya tenemos a nuestra base de datos.

Vincular tablas de otra base de datos La vinculación de tablas es la manera que tiene Access de compartir tablas entre distintos archivos de bases de datos. Así no se necesario abrir otro archivo para conectarse con las tablas contenidas en él. La vinculación de tablas funciona con archivos Access mdb y de otro tipo de bases de datos como DBase (la que utiliza Lotus Approach). Las tablas vinculadas pueden ser leídas pero no modificadas. Para poderlo hacerlo se necesita tener abierto el archivo mdb que las contiene. Para ejemplificarlo, creamos la base de datos de nuestro proyecto, a la que llamaremos Cursos de Formación, y desde allí vincular la tabla Localidad de la base de datos Localidad.mdb:  Archivo ÎObtener datos externos Î Importar…

23 

Access Avanzado 2003 

 Selecciona el archivo Localidad.mdb y pulsa el botón Vincular.

 En la ventana Vincular tablas selecciona la tabla Localidad y pulsa el botón Aceptar.

Ahora podremos ver que la tabla Localidad está vinculada a nuestra base de datos ya que aparece con un signo en forma de flecha:

Crear la tabla Funcionario Seguimos los mismos pasos que cuando se creó la tabla Localidad, añadiendo los campos siguientes:

24 

Corpus Ruiz Fernández 

Vamos a comentar algunas propiedades de estos campos: Tamaño del campo: Entero largo, ya que el DNI no contiene decimales y tiene un tamaño suficiente para almacenar los DNI’s.

DNI

Formato: 00000000, para que cuando se introduzca un DNI de 7 o menos cifras se rellene a la izquierda con ceros. Lugares decimales: 0, ya que no contiene decimales. Indexado: Sin, sin duplicados. Para acelerar las búsquedas por este campo y no duplicar valores. Primer apellido

Tamaño del campo: Con 15 caracteres tenemos suficiente para los nombres de los funcionarios.

Segundo apellido

Requerido: Sí, para hacer obligatoria la entrada de datos en estos campos.

Nombre

Permitir longitud cero: No, para no permitir cadenas de longitud cero en los campos. Indexado: Sí, si quieres acelerar las búsquedas u ordenación por estos campos, en caso contrario No. Domicilio

Tamaño del campo: Con 35 caracteres tenemos suficiente para el domicilio. Siempre habrá tiempo para aumentar el tamaño cuando queramos. Requerido: Sí, para hacer obligatoria la entrada de datos en ese campo.

Sueldo

Formato: Euro. Lugares decimales: 2, ya que el euro contiene 2 decimales.

CodigoPueblo

Tamaño del campo: Con Entero tenemos una longitud suficiente para introducir los posibles valores de este campo. Formato: 00000, para completar con 0 a la izquierda el número que se introduzca. Lugares decimales: 0, ya que es un número entero por lo que no contiene decimales. Requerido: Sí, para hacer obligatoria la introducción de datos en este campo.

Relacionar las tablas Funcionario y Localidad Una vez hemos creado las tablas Funcionario y Localidad, a Access se le tiene que decir cómo debe combinar la información mediante una relación. En una relación, los campos relacionados deben ser del mismo tipo de datos pero no es necesario que tengan el mismo nombre. Para crear una relación hay que seguir estos pasos:  Hacer clic en Relaciones

en la barra de herramientas o Herramientas Î

Relaciones… en la barra de menús.  Como aún no se ha definido ninguna relación, se mostrará automáticamente el cuadro de diálogo Mostrar tabla:

25 

Access Avanzado 2003 

 Hacer doble clic en las tablas que vamos a relacionar -Funcionario y Localidad- y cerrar el cuadro de diálogo Mostrar tabla. Aparecerán las dos tablas en el cuadro de Relaciones, donde podemos observar los diferentes campos de las tablas. Los campos clave de cada tabla vienen en negrita.

 Arrastrar el campo que deseamos relacionar de una de las tablas al campo relacionado de la otra. Como vimos anteriormente, los campos a relacionar son Localidad.Codigo y Funcionario.CodigoPueblo que son la clave principal de la tabla Localidad y la clave ajena de la tabla Funcionario. En el cuadro de diálogo Modificar relaciones hay que comprobar que los campos mostrados en las dos columnas son correctos y pulsar Crear.

26 

Corpus Ruiz Fernández 

 En la ventana de relaciones aparecerá la relación que acabamos de crear:

Nota: Las relaciones entre Funcionario-Solicitud y Solicitud-Curso se proponen como ejercicio. Quedarían así:

Asimismo, cada una de estas tablas contendrá estos campos:

27 

Access Avanzado 2003 

Integridad referencial La integridad referencial es un conjunto de reglas de Access que garantizan que las relaciones entre los registros de tablas relacionadas son válidas y que no se eliminan ni modifican accidentalmente datos relacionados que satisfacen dicha relación. Sirve para aumentar la seguridad en el tratamiento de los datos que coexisten entre dos tablas relacionadas. Se puede establecer integridad referencial cuando: ˆ

El campo que relaciona ambas tablas tiene que ser en la tabla principal un campo

clave (indexado si y sin duplicados) y en la otra tabla clave ajena, también indexado (con o sin duplicados según proceda). Ejemplo: En la relación entre las tablas Funcionario y Solicitud, el campo que las relaciona –DNI- es clave principal en la tabla Funcionario y clave ajena en la tabla Solicitud. ˆ

Los campos relacionados tienen el mismo tipo de datos, a excepción de que la

relación se establezca entre un campo de tipo Autonumérico y un campo de tipo Numérico, siempre y cuando este último sea un Entero largo (por lo tanto los dos campos con la misma longitud: entero largo). No se pueden relacionar un campo de texto con uno de fecha, uno numérico con uno de texto... ˆ

Ambas tablas deben pertenecer a la misma base de datos de Access (estar dentro del

mismo archivo mdb). Por lo tanto, no podrá establecerse integridad referencial entre la tabla Funcionario y la tabla vinculada Localidad ya que pertenecen a distintas bases de datos. Cuando se establece la integridad referencial entre dos tablas, se van a cumplir las siguientes reglas: ˆ

No podemos introducir un valor para el campo que es clave ajena en la tabla

relacionada si antes no ha sido introducido en el campo que es clave principal de la tabla principal. Por tanto, no podemos tener solicitudes cuyo DNI no esté mecanizado en la tabla Funcionario. ˆ

No se puede eliminar un registro de la tabla principal –Funcionario- si existen registros

coincidentes en la tabla relacionada –Solicitud-, salvo que se active la casilla Eliminar en cascada los registros relacionados en la ventana Modificar relaciones. Esta opción es muy arriesgada ya que una vez que Access borra un registro ya no puede volverse a recuperar si no es desde una copia de seguridad.

ˆ

No se puede cambiar el valor de la clave principal de la tabla principal –Funcionario-

si tiene registros relacionados en la otra tabla –Solicitud-, salvo que se active la casilla 28 

Corpus Ruiz Fernández 

Actualizar en cascada los campos relacionados en la ventana Modificar relaciones.

29 

Access Avanzado 2003 

Ejercicios ˆCrear la base de datos Cursos de formación con las tablas Funcionario, Solicitud y Curso. ˆVincular la tabla Localidad de la base de datos Localidad.mdb. ¿Puede haber integridad referencial entre la tabla Localidad y la tabla Funcionario.? ˆRelacionar las tablas Funcionario-Solicitud y Solicitud-Curso. ˆPara probar que las relaciones están bien hechas, introducir dos o tres registros en cada una de las tablas siguiendo este orden:

30 

o

Añadir datos algunos funcionarios.

o

Añadir distintos tipos de cursos.

o

Añadir unas cuantas solicitudes de funcionarios que ya estén mecanizados.

Corpus Ruiz Fernández 

31 

Access Avanzado 2003 

Consultas

32 

Corpus Ruiz Fernández 

33 

Access Avanzado 2003 

Introducción El objeto Consulta de Access nos permite visualizar o imprimir una serie de registros de una o varias tablas que cumplen unas determinadas condiciones y elegir los campos a visualizar. Los datos se almacenan en las tablas y no en las consultas por lo que las modificaciones tendrán efecto sobre las tablas origen de la consulta. Podemos utilizar una consulta para proporcionar datos a un formulario o informe y presentar sólo los registros que se han obtenido.

Tipos de consultas ˆ

Consultas de selección: Es la más habitual y sencilla. Con este tipo de consulta

podemos: o

Obtener los datos de una o más tablas y mostrarlos en una hoja de datos en la que poder actualizar los registros.

o

Calcular datos a partir de los registros de la tabla: ƒ

Campos calculados (para cada registro) y campos resumen (para un conjunto de registros: total, sumas, promedios, etc.)

ˆ

Consultas de acción: Realiza operaciones con los datos de una tabla (eliminar, o

actualizar una serie de registros, crear tablas con los datos de otras, importar datos de tablas a otra –datos anexados. ˆ

Consulta de tablas de referencias cruzadas: Para resumir los datos de una o varias

tablas en forma tabular.

Creación de mi primera consulta Una vez presentadas las solicitudes para los cursos, el personal de Formación junto con los sindicatos se reúnen para elegir a los funcionarios que van a asistir a los cursos. Por tanto, necesitamos un campo más en la tabla Solicitud para poder distinguir quién de los que han solicitado los cursos van a realizarlos y quien no –a dicho campo lo llamaremos Aceptado y será de tipo booleano ya que contiene valores que pueden ser sólo Verdadero o Falso (Sí/No):

34 

Corpus Ruiz Fernández 

¿Cómo visualizar todas las solicitudes que han sido aceptadas utilizando un objeto consulta?... Sigamos estos pasos:  Nos situamos en la ventana del objeto Consultas de Access y pulsamos en el icono Nuevo.

 Elegimos Asistente para consultas sencillas y clic en Aceptar.

 En Tablas/Consultas elegimos la tabla Solicitud y seleccionamos los campos que queremos visualizar (DNI, CodigoCurso, Fecha Curso y Aceptado.) Clic en Siguiente.

 La consulta es de detalle ya que se va a presentar todos los registros de la tabla Solicitud que hayan sido aceptadas y no resúmenes de los mismos. Dejamos la opción por defecto que presenta Access. Clic en Siguiente.

35 

Access Avanzado 2003 

 Damos un nombre a la consulta –Solicitudes aceptadas- y pulsamos Finalizar. Elegimos la opción Modificar el diseño de consulta- para que se abra la consulta en modo diseño desde donde podremos modificarla y añadir las condiciones que debe cumplir.

El resultado que obtenemos en Access será similar a éste:

La ventana de diseño de consultas tiene dos áreas: La superior -donde aparecen las tablas que participan en la consulta- y la inferior –rejilla que presenta los campos añadidos a la consulta y donde se especifican los criterios que tiene que cumplir. En nuestro caso, establecer como criterio en el campo Aceptada el valor Sí, ya que queremos visualizar sólo las solicitudes aceptadas. 36 

Corpus Ruiz Fernández 

Para ejecutar la consulta hay que seleccionarla y pulsar el botón Abrir. El resultado será similar a éste:

Que nos presenta, en una hoja de datos, los registros que cumplen los criterios establecidos en la consulta.

Consulta en más de una tabla Si miramos el resultado de la consulta anterior, no podemos saber cómo se llama el funcionario ni el curso al que hace referencia los registros que cumplían los criterios. Access permite hacer una consulta en la que estén implicados campos pertenecientes a más de una tabla. Vamos crear otra consulta con los siguientes campos: Tabla

Campos

Solicitud

Aceptada y FechaCurso

Funcionario

Nombre, Primer apellido y Segundo apellido

Curso

Nombre

 Borramos la consulta anterior y seguimos los mismos pasos anteriores. La única diferencia es que tenemos que elegir la tabla a la que pertenecen los campos que vamos a añadir.

Para diferenciar los campos con el mismo nombre pero de distintas tablas, Access antepone al campo el nombre de la tabla a la que pertenece (Funcionario.Nombre y Curso.Nombre)  Le damos el mismo nombre que a la anterior –Solicitudes aceptadas- Si se ha seguido correctamente los pasos, la consulta quedaría así:

37 

Access Avanzado 2003 

En la zona superior aparecen las tablas que participan en la consulta con sus relaciones y en la inferior los campos a visualizar. Con ayuda del ratón, podemos modificar la posición de las tablas para ver mejor la relación entre las mismas. Asimismo, introducimos el criterio de la consulta.

Al ejecutarla, su resultado será:

En la que, ahora sí, podemos saber el nombre y apellidos así como el curso de las solicitudes que han sido aceptadas. Podríamos seguir añadiendo criterios, como: Criterio

Fórmula

Obtener solicitudes de un año en concreto

Año([FechaEntrada])=2007

Obtener solicitudes del año actual

Año([FechaEntrada])=Año(Ahora())

Obtener solicitudes del mes actual

Año([FechaEntrada])=Año(Ahora()) Y Mes([FechaEntrada])=Mes(Ahora())

Obtener solicitudes presentadas en un intervalo de fechas.

>#01/01/2007# Y 0 Por lo que entonces se ejecutará la acción AplicarFiltro con la condición [DNI] Como [Formularios]![Funcionario]![VarBuscar] Que equivale a lo mismo que si hubiéramos aplicado un filtro por formulario y en el campo DNI hubiéramos introducido el valor que se ha introducido en el control independiente VarBuscar.

ˆ

Si no se ha encontrado ningún registro:

DCont("[DNI]";"Funcionario";"[DNI] = [Formularios]![Funcionario]![VarBuscar]")=0 La acción a ejecutar será el mostrar todos los registros y mostrar un cuadro de mensaje informando de que no se ha encontrado ningún registro.

89 

Access Avanzado 2003 

La macro Funcionario.Buscar con las acciones antes comentadas:

Nota: El nombre del campo y la tabla deben de ir entre comillas y entre corchetes. El criterio entre comillas.

Resumen El grupo Funcionario contiene tres macros –para añadir, modificar y buscar registros de la tabla Funcionario.

.

El grupo Curso Las acciones a llevar a cabo serán añadir y modificar registros. Se deja como ejercicio, sólo hay que seguir los mismos pasos que cuando se crearon las macros del grupo Funcionario.

El grupo Solicitud Una tarea muy útil a realizar desde este formulario es la exportación de registros para combinarlos con un documento Word y la de imprimir directamente escritos de Word ahorrándose la tarea de la exportación- mediante código de Visual Basic. Nota: Además, este grupo tiene las macros añadir, modificar y buscar, vistas en el grupo Funcionario así que no vamos a entrar en más detalles.

90 

Corpus Ruiz Fernández 

Macro Exportar Ojo, antes de pulsar en el botón que ejecuta la macro hay que asegurarse de que se ha aplicado un filtro por formulario para que sólo se exporten los registros que cumplan las condiciones excepto cuando queremos hacer una exportación de todos los registros. Para aplicar el filtro por formulario hay que hacer clic en

e introducir las condiciones de

búsqueda en el formulario.

Opciones cuando se filtra por formulario:

Para realizar la exportación de registros se utiliza la acción SalidaHacia.

ˆ

El tipo de objeto desde el que vamos a realizar la exportación es Formulario.

ˆ

El nombre del formulario es Solicitud.

ˆ

El tipo de archivo al que se va a exportar es Microsoft Excel 97-2003 (*.xls).

ˆ

El archivo de Microsoft Excel donde se exportan los registros es misolicitud.xls. Si no

se especifica ningún directorio lo almacena en Mis Documentos.

91 

Access Avanzado 2003 

ˆ

Autoinicio se ha puesto en No para no abrir el archivo misolicitud.xml.

Macro Imprimir Cuando hay que imprimir un registro desde un formulario, una opción a la fusión es hacerlo con Código Visual Basic:  Crear una plantilla en Microsoft Word en la que insertaremos el texto normal de un escrito más unos campos personalizados (DNI, Nombre, Primer apellido, etc…) desde Archivo Î Propiedades Î Personalizar. Por ejemplo, para el campo Localidad: o

Nombre: Localidad

o

Tipo: Texto

o

Valor: Texto que aparece en la plantilla cuando se insertar el campo.

 Insertar los campos en el documento y guardarlo como plantilla (extensión dot.) o

Menú Insertar Î Campo, seleccionar el nombre de campo DocProperty, seleccionar el nombre del campo a insertar en la plantilla y pulsar Aceptar.

92 

Corpus Ruiz Fernández 

 Desde el evento Al hacer clic del botón Imprimir se hace clic en … para crear el siguiente procedimiento: Private Sub Comando38_Click() Dim documento = "modelo.dot" Dim directorio, strPROP Dim Escrito As Object directorio = Application.CurrentProject.Path Set Escrito = CreateObject("Word.Application")

With Escrito .Visible = False .Documents.Add directorio & "\" & documento End With

With Escrito.ActiveDocument For Each strPROP In .CustomDocumentProperties Select Case strPROP.Name 'Asignar campos Access a campos Word Case "DNI": strPROP.Value = Me.DNI Case "Nombre": strPROP.Value = Me.Funcionario_Nombre Case "PrimerApellido": strPROP.Value = Me.PrimerApellido Case "SegundoApellido": strPROP.Value=Me.SegundoApellido Case "Domicilio": strPROP.Value = Me.Domicilio Case "CP": strPROP.Value = Me.CP Case "Localidad": strPROP.Value = Me.Localidad_Nombre Case "Curso": strPROP.Value = Me.Curso_Nombre Case "FechaEntrada": strPROP.Value = Me.FechaEntrada Case "FechaCurso": strPROP.Value = Me.FechaCurso Case "Horas": strPROP.Value = Me.Horas End Select Next End With With Escrito .ActiveDocument.Fields.Update .ActiveDocument.PrintOut .ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges .Quit End With Set Escrito = Nothing MsgBox "Documento generado" End Sub

93 

Access Avanzado 2003 

Resumen El grupo Solicitud contiene cuatro macros –para añadir, modificar, buscar y exportar registros.

El grupo Comun En este grupo agregaremos las macros que van a ser comunes a dos o más formularios. Vamos a incorporar en los formularios Funcionario, Solicitud y Curso un menú para que podamos desplazarnos desde unos a otros. Para ello crearemos 3 macros comunes. También se incluirá la macro Aceptar para confirmar las variaciones que se hagan al añadir o modificar registros.

Macro Funcionario

Macro Curso

94 

Corpus Ruiz Fernández 

Macro Solicitud

Macro Aceptar

Al estar en blanco el Tipo de objeto se cierra la ventana activa.

95 

Access Avanzado 2003 

96 

Corpus Ruiz Fernández 

Formulario Curso

97 

Access Avanzado 2003 

Formulario Funcionario

98 

Corpus Ruiz Fernández 

Formulario Solicitud

99 

Access Avanzado 2003 

Formulario GestionCurso

100 

Corpus Ruiz Fernández 

Formulario GestionFuncionario

101 

Access Avanzado 2003 

Formulario GestionSolicitud

102 

Corpus Ruiz Fernández 

Formulario SubCurso

103 

Access Avanzado 2003 

Formulario SubFuncionario

104 

Corpus Ruiz Fernández 

ANEXO DE LAS ACCIONES MÁS UTILIZADAS Acción

Descripción

AbrirConsulta

Para abrir una consulta de entre las que se disponen.

AbrirFormulario

Abre un formulario.

AbrirInforme

Abre un informe.

AbrirTabla

Abre una tabla.

BuscarRegistro

Para buscar el primer registro que cumpla unas condiciones.

BuscarSiguiente

Se posiciona en el registro siguiente que cumple los criterios indicados en la acción BuscarRegistro.

CancelarEvento

Cancela el evento que ejecutó la macro que contiene esta acción.

Cerrar

Cierra la ventana especificada o la activa si no se indica ninguna.

CuadroMsj

Muestra mensajes para interactuar con el usuario.

DetenerMacro

Detiene la macro que se está ejecutando.

DetenerTodasMacros

Detiene todas las macros que se están ejecutando.

Eco

Oculta o muestra los resultados de una macro mientras se ejecuta.

EjecutarMacro

Ejecuta una macro. Útil para ejecutar una macro desde otra macro.

EstablecerValor

Establece un valor para un control.

Guardar

Guarda el objeto especificado o el activo si no se especifica su nombre.

Imprimir

Imprime el objeto activo –hoja de datos, informes…

IraControl

Mueve el cursos al control especificado.

IraRegistro

Para ir a un registro determinado.

MostrarTodosRegistros

Quitar el filtro aplicado y muestra todos los registros.

NuevaConsulta

Vuelve a consultar un control especificado en el objeto activo o el objeto si no se especifica ningún control.

SalidaHacia

Exporta los registros al formato especificado –Excel, Word, texto, html…

Salir

Cierra Access.

105 

Access Avanzado 2003 

106 

Corpus Ruiz Fernández 

Ejercicios ˆ

Crear las macros para los formularios Curso y GestionCurso.

107 

Access Avanzado 2003 

108 

Corpus Ruiz Fernández 

INFORMES

109 

Access Avanzado 2003 

110 

Corpus Ruiz Fernández 

Introducción El objeto informe se emplea para ofrecer una presentación personalizada de la información pudiendo ordenarla, agruparla y resumirla en la forma deseada. También permite generar totales de los datos numéricos. Se utilizan para sacar datos de una base de datos e imprimirla. Un informe no es nada más que una forma elegante y dinámica de presentar una tabla o consulta e imprimirlas. Tanto en su estructura como en su funcionamiento son prácticamente idénticos a los formularios, aunque a través de informes no podemos modificar datos, sólo presentarlos.

Formas de crear un informe ˆ

Asistente para informes o etiquetas: Permite diseñar informes con un formato

estándar de una forma rápida, ya que realizan automáticamente todo el trabajo básico. Access irá planteando cuestiones y con los datos que proporciona el usuario, se irá creando el informe. ˆ

Autoinformes: Elaboran un informe sencillo predefinido por Access sin pedir ninguna

información al usuario. ˆ

Vista diseño: Permite crear informes sin ayuda del asistente. Se parte de cero y solo

se recomienda su uso en el caso de que los asistentes no satisfagan los requerimientos del usuario.

Crear informe con ayuda del asistente Con el asistente se pueden crear informes con diseños variados. Tras haber seleccionado Asistente para informes en la ventana de nuevo informe, debemos de seleccionar la tabla o consulta con la que vamos a elaborar el informe. Tomando como ejemplo nuestro proyecto, crearemos un informe que nos liste todos los funcionarios que han solicitado alguna vez algún curso, por lo que nos basaremos en la consulta ConFuncionario.

111 

Access Avanzado 2003 

Cuando hay campos de más de una tabla en la consulta, Access nos da la opción de presentar los datos por una de las tablas. En nuestro caso elegiremos por Funcionario.

Access nos da la opción de agrupar y ordenar los registros que se van a presentar en el informe por uno o varios campos. Vamos a agruparlos por pueblos.

También tenemos la opción de calcular resúmenes de alguno de los campos que van a presentarse en el informe –optamos por calcula la suma del campo Sueldo- pulsando el botón

112 

Corpus Ruiz Fernández 

Se finaliza eligiendo la distribución, estilo y nombre a dar al formulario –en pasos, corporativa y Funcionario respectivamente.

Nota: Podríamos haber creado un campo calculado en la consulta ConFuncionario para presentar los apellidos y el nombre y haber añadido al informe éste campo y no los del nombre y apellidos.

Para personalizar el informe hay que situarse en modo Diseño. Aparecerá una ventana similar a ésta:

113 

Access Avanzado 2003 

Elementos de un informe Secciones principales ˆ

Encabezado del informe: Se imprime una vez al principio del informe. El encabezado

del informe se utiliza para la información que normalmente aparecería en una página de portada, como un logotipo o un título y una fecha. El encabezado del informe se imprime antes del encabezado de página. Cuando se coloca un control calculado en el encabezado del informe, se calcula el valor para todo el informe. Por ejemplo, si se coloca un control que utilice la función Suma en el encabezado del informe, se calcula la suma para todo el informe. ˆ

Encabezado de página: Se imprime al principio de cada página. Se utiliza un

encabezado de página, por ejemplo, para repetir el título del informe en todas las páginas. ˆ

Encabezado de grupo: Se imprime al principio de cada grupo de registros y se utiliza

para imprimir el nombre del grupo. Por ejemplo, en un informe cuyos datos estén agrupados por pueblos –como es nuestro ejemplo-, el encabezado de grupo se utiliza para imprimir el nombre de los pueblos. Cuando se coloca un control calculado que utilice la función Suma en el encabezado de grupo, la suma corresponde al grupo actual. ˆ

Detalle: Sección en la que aparecen los registros del origen del informe, que pueden

ser más de uno. Se imprime una vez por cada fila del origen del informe. ˆ

Pie de grupo: Se imprime al final de cada grupo de registros. Los pies de grupo se

utilizan para imprimir información de resumen de sus correspondientes grupos. ˆ

Pié de página: Se imprime al final de cada página. Los pies de página se utilizan para

imprimir números de página o información relativa a la página.

114 

Corpus Ruiz Fernández 

ˆ

Pié de informe: Se imprime una vez al final del informe. Los pies del informe se utilizan

para imprimir los totales de los informes u otra información de resumen de todo el informe.

Opciones en un informe ˆ

Agrupar: Una de las opciones más importantes en un informe es la posibilidad de

mostrar los datos agrupados, seleccionando uno o varios subgrupos. Al agrupar datos evitamos que aparezcan datos repetidos en nuestro informe. ˆ

Forzar salto de página en los encabezados de grupo: Cada grupo comienza en una

nueva página. En vista de diseño, seleccionar el encabezado de grupo y establecer la propiedad Forzar nueva página

Agregar campos u otros controles a un informe existente Cada campo, etiqueta, línea o imagen que se ve en un informe se ha creado mediante algún tipo de control. El control más utilizado en un informe es el cuadro de texto, que suele utilizarse para mostrar los datos del origen de registros subyacente del informe. Podemos crear cuadros de texto que ya están enlazados con campos del origen de registros agregando campos del panel Lista de campos, o bien, agregarlos al informe mientras trabaja en la vista Diseño (pero, en ese caso, hay que enlazarlos a los campos del origen de registros). La vista Diseño tiene como ventaja que se pueden agregar muchos otros tipos de controles, además de los cuadros de texto dependientes, como rectángulos, saltos de página y gráficos. En esta sección se describen ambos métodos de agregar controles a un informe.

Agregar campos a un informe existente Desde la vista Diseño, asegurarse de que se muestra el panel Lista de campos –lista de todos los campos que están disponibles para su colocación en el informe. Para ver el panel Lista de campos pulsamos ALT + F8. Para agregar campos desde el panel Lista de campos hay que seleccionarlos y arrastrarlos a la sección del informe donde deseemos incluirlo. Al crear los campo, Access crea un cuadro de

115 

Access Avanzado 2003 

texto dependiente por cada uno de estos campos e incluye automáticamente un control de etiqueta junto a cada uno de ellos.

Agregar o modificar el agrupamiento y la ordenación Si ya tenemos un informe y queremos ordenarlo o agruparlo, o bien, modificar la ordenación o el agrupamiento, desde el modo Diseño, mostramos el panel ordenar y agrupar haciendo clic en Ver Î Ordenar y agrupar.

En Campo/Expresión indicamos los campos por los que queremos agrupar el informe y en Orden el tipo de ordenación. ˆ

Encabezado de grupo: Para crear un encabezado de grupo de grupo para un campo.

ˆ

Pie de grupo: Para crear un pie de página de grupo.

ˆ

Agrupar en: Para especificar cómo agrupar datos en un campo por el tipo de datos.

El informe Listado Cursos Utilizando el asistente vamos a crear un informe que liste los funcionarios que han solicitado cada uno de los cursos que ha convocado la Dirección Provincial. Va a estar basado en la consulta ConSolicitud. Pasos a seguir:  Creamos en la consulta un campo calculado que combine los apellidos y el nombre.

116 

Corpus Ruiz Fernández 

Apellidos y Nombre: [Primerapellido]+" "+[Segundoapellido]+", "+[Funcionario_Nombre]  Elegimos los campos de la consulta que queremos mostrar en el informe.

 Elegimos ver los datos por curso.

 Ordenamos por el campo calculado Apellidos y nombre.

117 

Access Avanzado 2003 

 Aplicamos una distribución y estilo. Finalizamos dándole el nombre de Listado Cursos. Por último, en modo diseño, se personaliza el informe.

Filtrado de datos en un informe Los informes creados con el asistente nos ayudan a organizar e imprimir los cursos y los funcionarios que lo han solicitado pero, normalmente, los usuarios querrán imprimir un subconjunto de estos registros y no la totalidad, por lo que debemos de proporcionar un método personalizado para seleccionar registros mediante la creación de un procedimiento

118 

Corpus Ruiz Fernández 

sencillo en Visual Basic que será asociado al evento clic de un botón del formulario Solicitud. Tanto el formulario como el informe deberán de estar basados en la misma consulta. Antes de crear el procedimiento, veamos qué hace el informe Solicitudes: ˆ

Lista todas las solicitudes presentadas hasta la fecha, agrupados por el nombre de los

cursos. ˆ

Todos los funcionarios que han solicitado algún curso aparecen en el informe sin

distinguir si lo han hecho o no. Esto sería útil si quisiéramos listar todos los cursos y los funcionarios que lo han solicitado. Pero a medida que la base de datos de nuestro proyecto crece, el informe ocupa más páginas y los usuarios necesitan un sistema para imprimir sólo aquellas páginas que les interesen. Para filtrar datos desde un formulario a un informe –basados en la misma consulta- hay que seguir estos pasos:  Se abre en modo diseño el formulario Solicitud y se le añade el botón

.

 Al evento clic del botón se le asocia este procedimiento: DoCmd.OpenReport "Listado Cursos", acViewPreview, , Me.Filter Siguiendo estos pasos: o

Editar las propiedades del botón en modo diseño e ir a la ficha Eventos.

o

En el evento Al hacer clic, pulsar en … y elegir Generador de código. Pulsar Aceptar.

o

Escribir el código anterior en el procedimiento a crear.

119 

Access Avanzado 2003 

Ahora, cuando desde el formulario Solicitud se realiza un filtro por formulario

y pulsar el

se presenta el informe con los registros que sólo cumplen las condiciones

botón

del filtrado. Por ejemplo, el listado de las solicitudes del curso Microsoft Word que han sido aceptadas:

El informe Listado funcionarios Vamos a crear un informe que liste los cursos que ha solicitado cada uno de los funcionarios de la Dirección Provincial –agrupación por el campo Funcionario- y que resuma el total de horas de todos los cursos solicitados por el funcionario. Se hará a través del asistente y basado en la consulta ConSolicitud y los registros estarán ordenador por la fecha en que se solicitó. Los pasos a seguir son similares a los del anterior formulario más la opción de calcular los valores de resumen del campo Horas.

120 

ˆ

Campos de la consulta que se utilizarán para el informe son los siguientes:

ˆ

Ver los datos por Funcionario.

Corpus Ruiz Fernández 

ˆ

Resumir por el campo Horas.

ˆ

Ordenar los registros por la fecha de solicitud del curso.

Una vez retocado en modo diseño, el formulario quedaría así:

Forzar nueva página en cada encabezado de grupo Por defecto, cuando se crea un informe agrupado por algún campo Access no inserta un salto de página en cada uno de los valores que toma ese campo. Si queremos que lo haya, hay que decirle –en modo diseño- que se produzca el salto de página seleccionando el encabezado de

121 

Access Avanzado 2003 

grupo y editando sus propiedades. En la propiedad Forzar nueva página hay que seleccionar Antes de la sección.

NOTA: Si ahora visualizamos el informe comprobaremos que se ha producido ese salto de página entre cada uno de los valores del campo por el que se ha agrupado el formulario.

Filtrar los datos del informe desde el formulario Solicitud En el formulario Solicitud añadimos un botón

y le asociamos un procedimiento

que abra el informe Listado Funcionarios y le aplique el filtro por formulario igual que se hizo anteriormente. El código es el siguiente:

Creación de etiquetas postales Antes de comenzar la elaboración de las etiquetas postales –acuses de recibo- debemos de tener en cuenta el tamaño del papel y el tamaño de las etiquetas, pues dichos tamaños nos serán requeridos durante su proceso de creación. Se pueden dar dos casos: ˆ

Las etiquetas tienen unas dimensiones estándar: en este caso sólo debemos

seleccionarlas de una lista de etiquetas proporcionada por Access.

122 

Corpus Ruiz Fernández 

ˆ

Las etiquetas no se encuentran en la lista de etiquetas estándar: en este caso

debemos tomar las medidas de alto y ancho de etiquetas, márgenes (superior, izquierdo y derecho) y separación entre ellas (vertical y horizontal). Dependiendo del tipo de impresora –láser ó matricial- los acuses de recibo se harán de una forma u otra. Para impresoras láser deberemos de crear un formulario personalizado desde el panel de impresoras y faxes ya que el largo de tres acuses de recibo es de 12 pulgadas -30,48 cm.-

Creación de un formulario desde el panel Impresoras y faxes Abrimos el cuadro de diálogo de las propiedades del servidor de impresión haciendo clic en Archivo Î Propiedades del servidor y configuramos un nuevo formulario –Acuses- con los siguientes parámetros:

Nota: La medida del alto es 30,48 cm. ya que son lo que miden de alto 3 acuses de recibo. El ancho -21 cm.- es el equivalente al A4.

Acuses de recibo para impresoras matriciales Para generar acuses de recibo hay que recurrir al asistente para etiquetas. La creación del informe Acuses para matriciales basado en la consulta ConFuncionario es similar a la creación de los informes anteriores con estas diferencias:  Hay que elegir Asistentes para etiquetas en vez de Asistentes para formularios.

123 

Access Avanzado 2003 

 Personalizar una nueva etiqueta –Acuses- cuyo tamaño es 10,16cm x 21cm.

124 

Corpus Ruiz Fernández 

 Establecer el formato del texto –color y fuente.

 Añadir los campos y el texto a la etiqueta.

125 

Access Avanzado 2003 

 Ordenar la etiqueta por uno o más campos.

 Darle un nombre –Acuses para matriciales- a la etiqueta.

Acuses de recibo para impresoras láser No hay que crear ninguna etiqueta personalizada. Utilizaremos la etiqueta Avery siguiente:

Los pasos son similares a los vistos en las matriciales.

126