60
LECCION 1- Introducción avanzada a las Bases de Datos Relacionales En este curso vamos a profundizar en las características que convierten a Access en una herramienta profesional imprescindible para todo tipo de empresas, y en especial para aquellas que necesitan manejar grandes volúmenes de información. Para ello introduciremos el concepto de Base de Datos Relacional. En este curso aprenderemos las ventajas que podemos obtener de las bases de datos relaciones frente a las bases de datos simples; Veremos los inconvenientes de tener todos los datos en una única tabla y la imposibilidad de manejarlos con un mínimo de eficiencia. Y explicaremos los fundamentos de las bases de datos relacionales. Aprenderemos la importancia de una buena planificación antes de comenzar su creación. También veremos los tipos de relaciones entre las bases de datos y aprenderemos a crearlas y gestionarlas Abordaremos los formularios, consultas orientadas a las bases de datos relacionales. Aprenderemos que son los filtros, sus tipos y como utilizarlos Y acabaremos el curso aprendiendo el uso del asistente para informes no automáticos 1

Manual Access Avanzado

Embed Size (px)

Citation preview

Page 1: Manual Access Avanzado

LECCION 1ª1- Introducción avanzada a las Bases de Datos Relacionales

En este curso vamos a profundizar en las características que convierten a Access en una herramienta profesional imprescindible para todo tipo de empresas, y en especial para aquellas que necesitan manejar grandes volúmenes de información.

Para ello introduciremos el concepto de Base de Datos Relacional.

  En este curso aprenderemos las ventajas que podemos obtener de las bases de datos relaciones frente a las bases de datos simples; Veremos los inconvenientes de tener todos los datos en una única tabla y la imposibilidad de manejarlos con un mínimo de eficiencia. Y explicaremos los fundamentos de las bases de datos relacionales.Aprenderemos la importancia de una buena planificación antes de comenzar su creación. También veremos los tipos de relaciones entre las bases de datos y aprenderemos a crearlas y gestionarlasAbordaremos los formularios, consultas orientadas a las bases de datos relacionales.

Aprenderemos que son los filtros, sus tipos y como utilizarlosY acabaremos el curso aprendiendo el uso del asistente para informes no automáticos

1

Page 2: Manual Access Avanzado

Las bases de datos simples son aquellas que están formadas por una sola tabla de datos. Este tipo de bases de datos son muy fáciles de crear y utilizar y cubren la mayoría de necesidades de los particulares. Por ejemplo para crear y gestionar una agenda telefónica bastan con los conocimientos de Access Imprescindible para crear una tabla como esta.

Pero si estamos trabajando para una empresa necesitaremos, por ejemplo llevar al día no solo la agenda con los datos de los clientes, de los proveedores. Si no también llevar la relación de los productos que les hemos comprado o vendido, y esto debe verse reflejado en nuestro control del almacén. Es evidente para cualquiera que haya empleado una tabla de Access que manejar todos estos datos en una única tabla es una tarea muy incomoda, principalmente por su exagerada longitud, calcula que todos los campos necesarios para llevar un exhaustivo control sobre los datos de la agenda, de los stocks, de las entradas y salidas del almacén podría superar los veinte campos de longitud, y tener todos estos campos en una única tabla nos obligaría a utilizar permanentemente las barras de desplazamiento

2

Page 3: Manual Access Avanzado

Pero aunque utilizáramos informes y formularios para restringir el numero de campos con los que trabajar de manera simultanea eso no disminuiría la ineficacia que implica introducir una y otra vez los mismos datos en la tabla.Parece que no es mucho trabajo introducir los datos del cliente cada vez que hacemos una venta. Es lógico querer saber a quien el hemos vendido cada articulo, y también seria buena idea tener su numero de teléfono para hacer un seguimiento de su satisfacción respecto a nuestros productos y servicios. También deberíamos tener su dirección postal, su NIF, y otros datos fiscales, tales como forma de pago y nivel de crédito.Seguro que cada uno de nosotros podríamos pensar un buen numero de datos que nos resultarían mas o menos imprescindibles para nuestro negocio. Pero imagina lo que significa introducir todos estos datos con cada venta. Puede parecer que las ventajas de una tener una completa bases de datos superan los inconvenientes de tener que introducir todos esos datos con cada venta.

Pero seamos realistas, casi siempre vendemos a los mismos clientes, por norma general se suele tener una cartera de clientes que en su mayor parte es siempre la misma, es mas generalmente son un puñado de excelentes clientes los que consumen la mayoría de nuestros productos. Esto implica que para tener actualizada nuestra base de datos deberíamos introducir una y otra vez los mismos datos del mismo cliente con cada transacción que realizáramos. Ahora pregúntese ¿Cuántas transacciones realiza al mes para su mejor cliente?.El caso de los proveedores es aun más esclarecedor. ¿Seria lógico teclear una y otra vez todos los datos del proveedor con cada producto que le pidiéramos?. No, desde luego que no. Eso seria altamente ineficaz. Por no hablar de la gestión de los datos. Como la modificación de todos los registros del cliente o del proveedor por un cambio de dirección, no seria buena idea tener una base de datos en la que el cliente tras haberse mudado tuviera activa en las dos direcciones. Para solucionar estos y otros problemas Access tiene utiliza lo que se denominan las Bases de Datos Relaciones

3

Page 4: Manual Access Avanzado

Planificación de las bases de datos.:Cómo es fácil intuir una correcta planificación de las bases de datos antes de comenzar a crearla nos ahorrará muchos problemas y dolores de cabeza.. O de lo contrario podemos encontrarnos con datos duplicados, con relaciones inconsistentes, o hasta con la imposibilidad de obtener informes fiables.El primer paso es de terminar exactamente para que vamos a emplear la información de la tabla y añadir los campos que nos ayuden a obtener y manejar esa información. Si no se tiene claro este punto los problemas de la tabla ira aumentando según vayamos avanzando en su desarrollo, hasta que tengamos que volver a diseñar su estructura.Por ejemplo la tabla de clientes. En ella debe estar todo lo relacionado con los datos esenciales que necesitemos de los clientes, pero ningún otro.

Es decir lo necesario para saber quien, y como contactar con él.Puede parecer a simple vista que también necesitaríamos saber qué compró, cuánto dinero pagó, quién le atendió, etc... pero esos datos no están relacionados exclusivamente con el cliente, ya que también están relacionado con la tabla de artículos (qué compró) y con la tabla de facturación (cuánto pagó). Si se añadiera aquí esta información tendríamos esos datos duplicados en las otras tablas. Y eso es síntoma de que no esta bien diseñada nuestra tabla.Uno de los problemas de tener en las manos una herramienta tan potente y versátil como Access es que prácticamente se puede hacer de todo, eso incluye diseñar una tabla con los campos que deseemos, incluso aunque no sea de la mejor más eficiente, y a veces es posible que solo nos percatemos de que la tabla esta mal diseñada cuando obtengamos un error en algún informe. Pero si seguimos estos pasos lograremos construir tablas bien diseñadasEl siguiente paso es decidir los campos de la tabla que estamos diseñando. Puede parecer que la elección de los campos es sencilla una vez que tenemos definida la función de la tabla, pero este es un punto delicado. Por ejemplo en nuestra tabla clientes, sabemos que queremos tener almacenado, su nombre, dirección y teléfono. ¿Son esos tres, realmente, los campos que va a tener nuestra tabla?

4

Page 5: Manual Access Avanzado

Podemos ver que hemos separado los campos "Nombre" y "Apellidos", y también el campo "dirección" y "Código postal". ¿Por qué lo hemos hecho?. Para poder ordenarlos y agrupar los registros por cada campo. Si no separásemos el nombre en los campos "Nombre" y "Apellidos" no podríamos ordenarlos por sus apellidos. ¿Y en el caso del campo dirección?. Es conveniente separar el código postal de la dirección porque cuando realicemos informes o envíos postales necesitaremos ordenarlos por el campo código postal, sin tener en cuenta su dirección.Para determinar correctamente los campos no hay reglas concretas, la experiencia es la mejor ayuda, aunque hay algunas costumbres que pueden ayudar especificar mejor los campos, como por ejemplo: preguntarte si vas a necesitar acceder a alguna parte del campo en concreto, si la respuesta es si, entonces debes dividirlo en varios campos.

Crea todos los campos que se necesiten pero que todos los campos tengan una estrecha relación con el concepto de la tabla, por ejemplo en la tabla de clientes no es necesario introducir datos sobre los vendedores. Crea otra tabla específicamente para ellos.

Y por ultimo es innecesario crear campos que se calculen a partir de otros. Es mas útil y exacto calcularlo cuando se necesite. Por ejemplo en el caso de que tengamos la fecha de nacimiento, no necesitamos tener otro campo para la edad, es más eficiente calcularlo cuando se requiera y no hará falta actualizarlo cada año

Introducción a la creación de un BD. Relacional.:

Como hemos visto en el tema 1. Las bases de datos relacionales no son mas que múltiples tablas, altamente especializadas y todas ellas referenciandose las unas a las otras, o utilizando la palabra mas apropiada "relacionándose" las unas con las otras.Con ellas tendremos numerosas ventajas, como son no tener que introducir información repetida, ahorrando trabajo y recursos de memoria de ordenador. Y también la facilidad y rapidez a la hora de realizar labores de mantenimiento, corrección o actualización de los datos de las tablas, En este tema diseñaremos nuestra primera base de datos relacional, para ello aprenderemos exhaustivamente, pero de forma sencilla a crear una tabla paso a paso. Veremos con ejemplos las posibilidades de los tipos de datos de Access. Explicaremos las propiedades de los campos y presentaremos la posibilidad de crear y gestionar indices basados en varios campos

Diseñar una base de datos con multiples tablas.:

Es comprensible que queramos poner a funcionar ya nuestra base de datos. Pasar directamente a introducir datos y sacarle provecho a nuestro flamante Access. Pero como hemos visto anteriormente el diseño de la base de datos previamente a su creación es un paso imprescindible y fundamental, en un buen diseño esta la diferencia entre una base de datos ágil y funcional o por el contrario encontrarnos con problemas a cada clic de ratón que nos hará desesperante la mas mínima búsqueda de datos.Por eso vamos a diseñar lo mas didácticamente posible un ejemplo para nuestra base de datos.Supongamos que trabajamos en una empresa. Cualquier empresa. Toda empresa tiene una actividad principal que es vender algo, que en este caso a ese algo lo llamaremos producto. Vamos a partir desde aquí.Los datos que necesitamos para cada venta son:Qué hemos vendido (Nombre de producto), Cuanto hemos vendido (Cantidad), A quien se lo hemos vendido (cliente) y Numero de cuenta para cobrárselo (NCcliente).

5

Page 6: Manual Access Avanzado

Pero según trabajemos con estos datos necesitaremos otros datos del cliente, como son el nombre de la empresa para la que trabaja (Empresa), Sus apellidos (Apellidos), Puesto que desempeña (Puesto), Teléfono de contacto (Teléfono), Los datos para enviar los pedidos (Dirección, Población, CP)

Pero claro, podríamos pedirle algo mas a nuestra base de datos, también seria conveniente que cada venta tuviese en cuenta las existencias del almacén y que llegado el caso se notificase la necesidad de hacer un nuevo pedido al proveedor.Es evidente que si añadimos mas campos a nuestra tabla pronto se convertiría en un dolor de cabeza mas que en una ayuda. Para ello debemos unificar los campos por criterios como ya sabemos.Empezaremos con la tabla de los datos referidos exclusivamente al cliente.

Ahora veremos los datos referidos exclusivamente al producto

Quizás sea necesario explicar aquí la necesidad de algunos campos. "CodigoProducto" es el campo clave necesario para distinguir unos productos de otros y relacionarlos con otras tablas.Tal vez no sea tan evidente la necesidad de un campo para el proveedor, veámoslo mas detenidamente. En realidad el producto no tiene solo su nombre, digamos que también

6

Page 7: Manual Access Avanzado

tiene apellidos, esta relacionado con la empresa que lo distribuye, no basta decir que necesitamos producto "DentifricoMasBlanco", necesitamos pedírselo a quien pueda proporcionárnoslos. Y para esto necesitamos los datos del Proveedor. Pero la primera norma es agrupar campos por afinidad y aunque es evidente que los campos del producto dependen de la tabla del proveedor, también es fácil ver que la tabla del proveedor no depende de los productos. Es decir que un solo proveedor tiene muchos productos pero que además podemos utilizar los datos de la tabla proveedores para otras funciones distintas, por ejemplo para tener contactos con los comerciales, o para desarrollar nuevas líneas de negocio.Así pues la solución es crear un campo que relacione una con otra tabla para aprovechar todas las ventajas de las bases de datos relacionales, y el vinculo entre las dos tablas es el campo "IDProveedor"Vamos a complicar aun más las cosas,

En esta tabla de pedidos vemos que hay tres campos de Códigos, el primero "CodigoPedido" es el propio a la tabla "Pedidos", la función de los siguientes es relacionar esta tabla con las otras. Gracias al "CodigoCliente" no es necesario introducir en esta tabla los datos del cliente que realiza el pedido, basta con teclear su numero de código, y Access se encargara de escribir por nosotros todos los campos que le pidamos, como son el nombre de la empresa, la dirección, el numero de Cuenta, etc...Con el campo "CodigoProducto" pasa exactamente igual, en vez de teclear en cada pedido una y otra vez todos los datos de todos los artículos, como su nombre, o su precio o descripción del producto. Access se encarga de relacionar las dos tablas gracias a este campo

Vamos a crear las tablas como ya sabemos desde la opcion "Crear tabla en Vista de diseño"

Vamos a crear primero la tabla "Cliente". Introduciremos los campos que hemos diseñado en la lección anterior y la columna descripción escribiremos una pequeña información que ayude a definir la función de cada campo.Es posible que cause extrañeza que los últimos tres campos los hayamos definidos como "tipo de datos" de "texto" cuando pudiera parecer más lógico definirlos como "numéricos". La razón es muy sencilla, solo asignaremos tipos "numéricos" a campos con los que realicemos operaciones aritméticas. Evidentente no vamos a sumar "Teléfonos", ni restaremos "Códigos Postales" y mucho menos multiplicaremos "Números de Cuentas". Por esta razón le asignaremos a estos campos un tipo "texto".

7

Page 8: Manual Access Avanzado

Al campo "CódigoCliente" le asignaremos tipo "Autonumérico" para asegurarnos que no haya ningún cliente repetido, Access se encarga automáticamente de asignar valor para cada nuevo registro que creemos.

En la tabla "pedidos", al contrario que en clientes, vemos que abundan los campos "Numéricos", hay algunos que si utilizaremos para hacer operaciones con ellos, por ejemplo el campo "Cantidad", es evidente que lo multiplicaremos con el campo "PrecioUnidad" para calcular el precio del pedido. Pero hay otros campos, como "CódigoCliente" y "CódigoProducto" que no vamos a utilizar en ninguna operación aritmética, ¿Entonces por qué le asignamos tipos "Numéricos"? La respuesta es sencilla, esos campos los vamos a utilizar para relacionar el pedido con las tablas "cliente" y "producto". La única forma relacionar dos tablas es que las dos tablas contengan un campo común por el cual poder referenciarse. Si en la tabla "clientes" tenemos el campo "CódigoCliente" y es "autonumérico", en la tabla pedido tenemos que tener también un campo "CódigoCliente", y tendrá que ser también numérico. Pero ¿entonces son iguales los tipos numéricos y autonuméricos?. Si. Un tipo autonumérico, es un campo numérico al cual Access se encarga automáticamente de asignarle un valor secuencial y único, esto es lo mejor para que no haya registros duplicados que pueden arruinar nuestra base de datos.Cuando terminemos de crear la tabla deberemos guardar la tabla. Podemos hacerlo pulsando en el icono guardar de la barra de herramienta.

La primera vez que guardamos cada tabla nos avisa y pregunta si queremos definir una clave principal. En el texto nos avisa que no es necesaria pero si recomendable. En nuestro caso, al estar trabajando con tablas relacionales es imprescindible contestar afirmativamente a esta ventana de dialogo, ya que cada tabla podrá ser referenciada por las demás a través de esta clave principal.

8

Page 9: Manual Access Avanzado

La ultima tabla que vamos a definir como ejemplo será la de productos

Todos los elementos de esta tabla han sido ya estudiados y no entrañan ninguna dificultad, vemos como hemos definido el campo "CódigoProducto" como clave principal, lo sabemos por el icono de la llave que está junto al "Nombre del campoTipos de datos

En la tabla pedido hemos añadido otros campos para explicar didácticamente los demás tipos de datos existente que podemos utilizar cuando la ocasión lo requiera.

Ya conocemos los tipos de datos "Autonuméricos", "Numéricos", "Texto". El Campo "Fecha/hora", se utiliza para almacenar Fechas y horas, la fecha de la compra, la hora de la salida del producto...El campo "Si/No", también conocidos como campos lógicos, solo pueden presentar dos estados, Si o No. Se utiliza principalmente para ahorrar espacio y tiempo, por ejemplo si tenemos una base de datos y queremos saber si el cliente esta casado o soltero, es más sencillo poner un campo Si/No, que teclear cada vez "Casado", "Soltero". O en el caso de nuestra tabla para comprobar el estado de una tarea pendiente.El campo "Memo", se utiliza cuado en el campo pretendemos añadir información que no sepamos a priori cuanto ocupará. El campo "Moneda", debe utilizarse en lugar del numérico cuando manejemos precios y otras cantidades monetarias. La razón de esto lo veremos mas detenidamente en la lección de las propiedades de los campos, pero para dar un pequeño avance diremos que el formato numérico puede ser muy versátil, quizás demasiado, para un campo tan

9

Page 10: Manual Access Avanzado

definido como "Moneda", El campo "Objeto OLE", puede utilizar imágenes, audio y otros formatos como si fuera un dato más. Se puede utilizar para añadir una fotografía del articulo o una grabación de sonido que acompañe la ficha del registro que queramos visualizarSe puede tener mas información sobre los tipos de datos disponibles en Access, pulsando la tecla F1 cuando tengamos el cursor situado en la casilla tipo de datos de la primera fila

LECCION 9ªPropiedades de los campos :La ventana de diseño de la tabla esta dividida en dos partes, la parte superior se utiliza para introducir las características básicas de los comandos, que hemos visto en lecciones anteriores. En la parte inferios introduciremos las propiedades de los campos.Como se puede ver, en la parte inferior hay dos pestañas, la primera de ellas "general" se utiliza para definir las propiedades. La segunda pestaña "búsqueda" la trataremos en otra ocasión más oportuna.

Las propiedades de campos varían según el tipo de datos que tenemos señalado en cada momento,, por ejemplo las propiedades de un campo autonumérico son: "Tamaño del campo", "Nuevos Valores", "Formato", "Titulo", "Indexado"

10

Page 11: Manual Access Avanzado

Las propiedades para un campo numérico son: "Tamaño del campo", "Formato", "Lugares decimales", "Mascara de entrada", "Titulo", "Valor predeterminado", "Regla de validación", "Texto de validación", "Requerido", "Indexado"

Y así con cada uno de los distintos tipos de datos.Ahora vamos a pasar a explicar en detalle cada una de las propiedades posibles."Tamaño del campo": Determina el numero de caracteres que puede contener un campo de texto, en los campos de tipo numérico sirve para determinar el numero mas grande que se podrá introducir en ese campo."Formato": Permite mostrar las fechas y números con un formato determinado"Lugares decimales": Determina el numero de cifras decimales que aparecerán cuando se use un formato con los campos numérico y moneda"Mascara de entrada": Obliga a que los datos introducidos en un campo se ajusten a un formato determinado."Titulo": Especifica el nombre que se usara en los formularios y en los informes, en lugar del propio nombre del campo"Valor predeterminado": Valor que tomara el campo por omisión cuando se agregue un nuevo registro a la tabla."Regla de validación": Determina las condiciones que debe cumplir el dato que se pretende introducir en el campo para ser aceptado"Texto de validación": Establece el texto del mensaje que aparecerá si el dato que se pretende introducir en el campo no cumple la regla de validación"Requerido": Indica que es obligatorio introducir un dato en el campo."Permitir longitud cero": Permite que se guarden cadenas de longitud cero en un campo

11

Page 12: Manual Access Avanzado

de tipo Texto o Memo"Indexado": Determina si este campos será un índice de la tabla. Este tema lo veremos mas detalladamente en la próxima lección.

Indices basados en varios campos:

Acabábamos el tema anterior con la propiedad de campo "Indexado". Este campo sirve para que Access encuentre mucho más rápido un dato de ese campo en concreto. Al marcar ese campo como "Indexado" Access construye un índice para él.Un índice parece exactamente lo que es, funciona igual que los índices de los libros, se ordenan los registros de forma que Access cuando quiera ir a uno en concreto lo busca primero en su índice y así llega a él más rápido. Access hace todo esto de manera transparente al usuario, es decir que nosotros no lo vemos y no nos damos cuenta de nada, bueno, si nos damos cuenta de que las búsquedas se hacen mas rápidamente.

La propiedad de campo "Indexado" tiene tres opciones: No: No crea ningún índice para el campo, o si lo tiene ya lo borraSi (Con duplicados): Crea un índice para este campoSi (Sin duplicados): Crea un índice sin duplicadosEsta ultima opción significa que no podrá haber datos que se repitan, por ejemplo no podremos crear un índice en un campo Nombre si dos o más registros se llaman igual.Podemos crear tantos índices como queramos, pero deberemos tener en cuenta de que estos aumentan mucho el tamaño de la base de datos, así pues solo es aconsejable crear índices de aquellos campos que sepamos que vamos a utilizar asiduamente para buscar registros.En el menú "Ver", tenemos la opción "Índices"

Pulsando en esta opción veremos todos los índices que hemos creado para la tabla

Vemos que para la tabla "Pedidos" hemos definido dos índices, uno para "CodigoPedido" y otro para "Vendedor". En la lista de índices aparentemente hay otro

12

Page 13: Manual Access Avanzado

llamado "PrimaryKey", pero es el mismo que "CodigoPedido", recordemos que establecimos que "CodigoPedido" fuera la clave principal de la tabla pedido y por eso hay en toda tabla con una clave definida hay un índice llamado "PrimaryKey", que hace referencia al campo "clave", independientemente de los demas indices que hayamos creado.En la zona de las "Propiedades del índice" , tenemos tres características"Principal": es la característica de la clave de la tabla, solo puede haber un índice que la tenga"Única": indica si puede haber valores duplicados o no"Ignorar nulo": Se excluye del índice los valore nulos, por ejemplo no se ordenan los registros vacíos

Introducción a las Bases de datos Relacionales Avanzadas:

A estas alturas ya sabemos que la principal característica de las bases de datos relaciónales es que distribuyen la al información entre varias tablas, en vez de compactarla en una sola,

La ventaja más evidente es el ahorro de trabajo que supone el no vernos obligados a introducir una y otra vez la misma información repetida. Pero hay otras ventajas; como es el ahorro de espacio de memoria, a priori parece que hoy en día este es el menor de los inconvenientes pero una tabla mal diseñada, con campos inútiles, índices olvidados puede multiplicar su tamaño lentamente al principio pero luego aumentar sus necesidad de recursos de forma astronómica con el uso hasta llegar a obligarnos a replantear nuestro diseño..Hay otra razón mas, la facilidad para el mantenimiento de los datos, si cambia el dato de un proveedor solo tenemos que cambiar un dato y toda la base de datos se actualizará en el instanteEsto se logra interconectando las tablas entre sí, esto se hace a través de los campos claves que ya conocemos, pero es importante conocer también que dependiendo de la forma que relacionemos las tablas el comportamiento de la base de datos puede variar. Por ejemplo al realizar una búsqueda o al imprimir un informe.En esta lección aprenderemos los distintos tipos de relaciones que existen y su aplicación a nuestras tablas. Este es, con mucho, el tema más teórico del curso, pero intentaré abordarlo de la forma más didáctica posible.

13

Page 14: Manual Access Avanzado

Tipos de Relaciones:

Relación de uno a muchosLa relación de uno a muchos es el tipo de relación más común que podemos encontrarnos. En las relaciones de este tipo cada registro de la tabla, a la que llamaremos "tabla padre", puede tener mas de un registro enlazado en otra tabla, a la que llamaremos "tabla hija".Pero cada registro de la tabla hija solo puede tener un registro enlazado en la "Tabla padre".Por ejemplo en nuestra base de datos un cliente puede hacer muchos pedidos, pero cada pedido solo puede haber sido realizado por un solo cliente. Este es un ejemplo de la relación uno a muchos

Relación de mucho a muchosEn las relaciones de este tipo, cada registro de la "tabla padre", puede tener mas de un registro enlazado en la "tabla hija". Y cada registro de la tabla hija, puede tener enlazado mas de un registro de la tabla padreEn nuestra base de datos por ejemplo, mas adelante, deberemos tener una tabla con los distribuidores y otra tabla con los productos. Si queremos poder escoger la mejor oferta de nuestros proveedores, deberemos poder cotejar las distintas ofertas de los mismos productos. Este es un ejemplo de relación muchos a muchos, en el que tenemos varios distribuidores para cada producto y cada distribuidor puede ofertarnos varios productos

Relación uno a unoEn las relaciones de este tipo cada registro de la "Tabla padre" solo puede tener un registro enlazado en la "tabla hija", y cada registro de la "tabla hija" solo puede tener como máximo un registro enlazado con la "tabla padre".Un ejemplo de este tipo de relaciones podría ser por ejemplo una tabla que relacionara cada trabajador con otra tabla en la que guardara su "Curriculum Vitae", es decir que cada trabajador solo tiene un currículo y cada currículo solo tiene hace referencia a un trabajador.

Integridad ReferencialLa integridad referencial se refiere a un conjunto de normas que nos aseguran que los datos se mantendrán correctamente relacionados una vez establecida la relación y de que no se podrán eliminar datos accidentalmente.

14

Page 15: Manual Access Avanzado

La primera de estas reglas viene a decir que no puede haber registros en una tabla hija que no estén enlazados a la tabla padre. En el ejemplo de nuestra base de datos: Todos los pedidos deben haber sido encargados por algún cliente. No puede haber pedidos sin clientes que lo hayan encargado. El sistema de integridad referencial se encarga de comprobar que cuando introducimos algún pedido el cliente al que se lo asignamos exista previamente en la tabla de clientes.La segunda de estas reglas viene a decir que no se puede borrar ningún registro de la tabla padre si esta relacionado con registros de las tablas hijas. Es decir Access comprueba que antes de borrar algún registro en la tabla clientes, no haya pedidos relacionados con ese cliente en la tabla pedidos.

Introducción a la creación de Relaciones:

En esta lección dejaremos de lado la teoría y abordaremos la practica de este apartado.Veremos como crear relación y como gestionarla para sacarle todo el provecho a esta característica capital de las bases de datos relacionales.Sabemos que para relacionar dos tablas es necesario que ambas tengan un campo en común que Access utilizara para relacionarlas. Para ello es necesario que ese campo deba cumplir algunas características, por ejemplo: El campo debe ser del mismo tipo en ambas tablas (numérico-numérico, o texto-texto...)También es necesario que el tamaño del campo sea el mismo en las dos tablas, no sería posible relacionar dos tablas, si el campo vinculado en una tabla tiene solo 1 digito, del 0 al 9, y en la otra tabla el campo tiene 5 dígitos, del 0 al 4999, ¿con quien relacionamos los 4989 registros posibles restantes? ... Si en una "tabla padre" tenemos definido le campo con el tipo "autonumérico", en la "tabla hija" tendremos que asignarle al campo el tipo "numérico

Creacion de Relaciones:

El primer paso es "abrir" la base de datos como ya sabemos

Una vez que tengamos abierta nuestra base de datos, ejecutaremos el comando "Herramientas", "Relaciones".

La primera vez la venta aparecerá vacía, y sobre ella aparecerá otro cuadro de dialogo "Mostrar tabla".

15

Page 16: Manual Access Avanzado

Para crear la relación entre las tablas tenemos primero que seleccionar una a una las tablas que queramos relacionar, marcándola y pulsando el botón agregar, antes de seleccionar la siguiente.Nosotros vamos a relacionar clientes y pedidos, una vez que hayamos agregado las dos tablas, pulsaremos el botón cerrar

Ahora vamos por fin a crear la relación entre estas dos tablas. Arrastraremos con el ratón el campo que queremos relacionar desde la lista de campos de la "tabla padre" hasta el campo correspondiente de la "tabla hija". Nosotros vamos a relacionar el campo "código cliente " de la tabla padre , con el campo "Código Cliente" de la tabla hijaAl arrastrar el campo "código cliente" desde la tabla cliente hasta el campo homónimo de la tabla pedido, surge una nueva ventana de dialogo

16

Page 17: Manual Access Avanzado

En la parte superior aparecen las tablas y campos que forman la relación, en la parte inferior se definen las características de la relación.En la proxima leccion las veremos una a una

Creación de Relaciones II:

Continuamos donde lo dejamos en la lección anterior:Vamos a verla una a una:La primera "Exigir integridad referencial": Ya hemos estudiado este concepto. Si quieres marcar esta opción es necesario que el campo relacionado de la tabla padre sea la clave principal o tenga un índice único, y que además los campos tengan el mismo tipo de datos. Al marcar esta casilla, se activan las dos siguientes para que podamos señalarlas o no, según nuestra conveniencia

Con la opción "Actualizar en cascada ..." cada vez que se cambie un registro de la clave principal de la "tabla padre" Access actualizara automáticamente el valor del campo correspondiente al nuevo dato en todos los registros relacionados.Con la opción "Eliminar en cascada..." cada vez que se elimine un registro de la "tabla padre", Access eliminara automáticamente los registros relacionados en la tabla secundariaATENCIÓN. La integridad referencial por defecto no permite que se eliminen registros de la tabla padre, cuando hay registros de la tabla hija que dependen de ellos. Si pulsamos la opción "eliminar en cascada..." Access, para no violar el principio de integridad referencial borrara TODOS los registros de la tabla hija que dependan de este dato de la tabla padre. Así que aunque Access pida confirmación para realizar esta acción, aconsejo prudencia a la hora de utilizarlo. No sería la primera vez que alguien se tira de los pelos por haber borrado todos los datos del cliente principal y todas las operaciones relacionadas con el por eliminar un "insignificante" registro en una tabla poco utilizada.Una vez que pulsemos aceptar veremos esta pantalla

17

Page 18: Manual Access Avanzado

Aquí se nos muestra las tablas que hemos relacionado; "Clientes" y "Pedidos". Y el campo por que el que están relacionados unidos por una línea "Código Cliente" en la tabla "Clientes", con la campo "Código cliente" de la tabla pedido. Así como el tipo de relación que hemos creado.Vemos que junto al "Código cliente" de la tabla clientes, hay un "1", y juntos al "Código cliente" de la tabla pedidos, está el símbolo "infinito" que Access asigna al valor "muchos". Es decir nuestra relación es de tipo "Uno a Muchos", que ya hemos visto que significa en temas anteriores.Ahora debemos guardar la relación, en el caso de que queramos conservarla, como ya sabemos, pulsando el icono guardar de la barra de herramientas.

Gestión de Relaciones:

Vamos a ver como revisar o modificar las relaciones que tengamos establecidas en la base de datos. El procedimiento en los dos casos es muy similar al que hemos utilizado para crear relaciones. Abriéremos la ventana de relaciones, como ya sabemos

Desde aquí podemos ver las relaciones establecidas en la base de datos actual, podemos hacerlo de dos maneras.Si queremos ver todas la relaciones definidas pulsaremos el botón derecho del ratón en la ventana "Relaciones", "Mostar todo", aquí se mostraran todas las relaciones.

18

Page 19: Manual Access Avanzado

Si queremos ver las relaciones definidas para una tabla concreta también en el botón derecho del ratón en la ventana "Relaciones", elegiremos "Mostrar tabla", y en la siguiente ventana de dialogo, elegiremos la tabla sobre la que queramos ver la relación.Podemos Agregar tablas a la ventana de relaciones como ya sabemos, y eliminarlas marcándolas y pulsando el botón suprimir.Para editarla una relación solo tenemos que hacer doble clic sobre la línea que la indica y se activara el dialogo modificar relaciones

Para eliminarla una relación solo tenemos que pulsar el botón derecho del ratón sobre la "relación", con "relación"me refiero a la línea que une una con otra tabla. Se despliega una ventana de dialogo que nos permite tanto modificar la relación como eliminarla.

En la proxima lección veremos como relacionar varios campos en una tablaGestión de Relaciones II:

Vamos ahora a ver como relacionar varios campos en una tabla. Por ejemplo nuestra tabla pedidos esta relacionada con la tabla clientes por el campo "código cliente" y con la tabla productos por el campo "código productos"

19

Page 20: Manual Access Avanzado

Primero agregaremos la tabla productos desde la ventana de dialogo mostrar tabla, a la que podemos acceder tanto desde la barra de herramientas como pulsando el botón derecho del ratón. Una vez seleccionada la tabla, pulsaremos "agregar"El siguiente paso es arrastrar el campo "código producto" desde la "tabla padre" , "Producto", hasta la "tabla hija", "Pedidos". Por defecto vemos que la línea de la relación no tiene ningún símbolo, esto significa que la relación es "de Muchos a Muchos",

Esto es debido a que no hemos marcado la casilla de integridad referencial, es decir que podría haber pedidos con muchos códigos de productos y muchos productos con muchos pedidos,. Esto es evidentemente erróneo, pues sabemos que aunque un producto puede haber sido pedido muchas veces, un único pedido solo hacer referencia a un solo producto, lo contrario daría lugar a errores a la hora de crear la factura, pues no sabríamos a que producto haríamos referencia

20

Page 21: Manual Access Avanzado

Si pulsamos la casilla "Exigir integridad referencial", vemos como se normaliza la línea de relación mostrando la relacion "Uno a muchos".

Introduciendo datos:

Para introducir datos en una tabla hay se puede hacer de varias formas, la mas sencilla es hacerlo desde la ventana de hoja de datos, desde aquí podremos introducir, modificar y ver los datos existente en cada tabla.

Para acceder a la ventana de datos solo hay que seleccionar la tabla que deseamos utilizar y pulsar el botón "Abrir"

La ventana que se abrirá a continuación tiene algunas particularidades que vamos a tratar ahora:

Lo primero que nos sorprende es que no están visibles todos los campos que hemos diseñado, no hay porque preocuparse, esto ocurre sencillamente porque la longitud total de

21

Page 22: Manual Access Avanzado

los campos es superior al tamaño de la venta. Para acceder al resto de los campos solo hay que utilizar la barra de desplazamiento horizontal que esta en la esquina inferior derecha de la venta.En la ultima fila, a la izquierda de la barra de desplazamiento, hay una serie de botones que sirven para desplazarse entre los registros de la tabla. El primero, por ejemplo, nos desplaza al primer registro de la tabla, los siguientes no encierran mayor dificultad. El ultimo botón situara el punto de inserción en un nuevo registro listo para introducir nuevos datos.En cuanto pulsemos la primera tecla en el interior de cualquier campo, automáticamente aparecerá un registro nuevo en blanco debajo del actual. Access creara un nuevo registro cada vez que se comienza a escribir en el ultimo.Vamos a introducir esta serie de registros para ir practicando: .

Código cliente: Este campo es autonumérico, esto significa que Access ira asignándolo secuencialmente a cada registro en el mismo orden que nosotros vayamos creando registros Empresa: MicrosoftNombre cliente: WilliamApellido cliente: GatesPuesto: ProgramadorDirección: first stPoblación: RedmonTeléfono:900-500-111CP: 11111Numero CC:10101010El resto de los registros del ejemplo serán:.

Aple, Bruce, Wine, accionista, main st ,san francisco, 900-500-222, 22222, 202002020Intel, Ken, Brockman, Comunicador, wall St, New York, 900-500-333, 33333,30303030Yahoo, Ronald, McDonnald, asesor de imagen, campos elíseos, Paris, 900-500-444, 44444, 4040404Es evidente que estos registros son ficticios, cualquier semejanza con la realidad es pura coincidencia, y pido a los titulares de los teléfonos, nombres, y marcas registradas disculpas por las confusiones creadas por estos datos.

Mi tabla ha quedado asi:

Edición de registros:

Ahora que ya sabemos introducir registros nuevos, vamos aprender a modificar los antiguos, esto se denomina labores de mantenimiento de la tabla.Vamos a abrir la tabla, en el caso de que este cerrada.

22

Page 23: Manual Access Avanzado

La tabla aparecerá de esta manera

Cuando nos movamos por la tabla, por defecto, estaremos en el modo desplazamiento, esto significa que si utilizamos las teclas de cursor desde una de las casillas, nos desplaceremos a la siguiente en la dirección que indique la tecla cursor que pulsemos.Para pasar al modo edición tendremos que pulsar la tecla F2, esto también se obtiene por defecto al movernos por la tabla con el ratón.Para distinguir en que modo estamos, solo hay que fijarse en el campo en el que estamos situados, si está seleccionado estaremos en el modo desplazamiento.

En cambio si vemos el cursor, estaremos en el modo edición.

La diferencia entre los modos consiste en que en este ultimo podremos modificar el contenido del campo sin introducir toda la información otra vez, y también que al utilizar los cursores nos desplazamos por el interior del campo, y no pasamos a las celdas laterales.Utilizando estas teclas podremos modificar el contenido de las tablas. Hay otras teclas útiles para el mantenimiento de las tablas, como son las teclas de inicio, fin...Respecto a la tecla suprimir deberíamos ser cuidadosos, pues mientras que solo un caracter cuando esta en el modo edición, estando en el modo desplazamiento borra todo el contenido de la casilla.Pero no hay porque preocuparse Access, contiene en el menú "Edición", el comando

23

Page 24: Manual Access Avanzado

deshacer, que salvo algunas excepciones nos permite deshacer todas los errores y equivocaciones que cometamos en nuestro trabajo con AccessHay cierta colección de campos que no se nos permite editar. Como son los campos autonuméricos, ya que Access introduce automáticamente los valores en estos campos. También los campos calculados, de algunas consultas, de algunos formularios. Estos tipos de campos los veremos más adelante, por eso no vamos a tratarlos aquí. 

Gestión de campos entre distintas tablas

Access permite la utilización de las instrucciones "Copiar", "Mover" y "Cortar" datos, no solo en la misma tabla, sino que permite hacerlo entre distintas tablas.En esencia el mecanismo es idéntico al que estamos acostumbrados a utilizar en el entorno Windows. Primero seleccionar. Access, permite que seleccionemos un dato, una celda, un campo, un registro al completo, una columna o un conjunto de filas y columnas... simplemente marcando con el puntero del ratón y arrastrando la selección

Y también:

Una vez que tengamos marcado los datos que necesitemos copiar en la otra tabla, podemos hacerlo tanto desde la instrucción "copiar" de el menú "Edición", como desde la instrucción "copiar" en el menú que se despliega al pulsar el botón derecho del ratón.

Cuando trabajamos con distintas tablas, Access crea un duplicado de los datos que tengamos seleccionados en el portapapeles. Access mantendrá estos datos en el portapapeles aunque cerremos una tabla, una base de datos, e incluso el mismo Access. Lo que permite pegar datos en tablas distintas en tablas distintas de las que proceden los datos

24

Page 25: Manual Access Avanzado

Al copiar registros entre distintas tablas deberemos tener en cuenta una serie de detalles:Por ejemplo Access pega los datos en el mismos orden en el que están en la tabla original. Si la tabla de origen tiene mas campos que la de destino, Access no pegara los datos de los campos que sobren. Por el contrario, si la tabla origen tiene menos columnas que la de destino, Access dejara en blanco los campos que sobren.

Access antes de terminar la pegar los datos nos pide confirmación para pegar los registros que hemos copiado.Podemos encontrarnos ciertos problemas a la hora de pegar los datos.Por ejemplo cuando el dato que intentamos copiar no es compatible con el tipo de dato del campo, es inútil intentar pegar una columna tipo texto en un campo de tipo numérico.Tampoco podemos hacerlo cuando el dato que queremos pegar es mas grande que el tamaño de campo destino. O cuando el dato provoca una duplicación en el campo clave o en cualquier otro campo definido como indexado sin duplicado.

Siempre que se produzca un error al pegar, Access creara una tabla llamada "Errores de pegado" y colocara en ella los datos que no haya podido pegar en la tabla de destino. Asi que es conveniente no perderla nunca de vista y comprobar los problemas que la causaron

La tabla de "Errores de pegado" podemos abrirla desde la venta de Base de datos y gestionarla exactamente igual cualquier otra trabla.

25

Page 26: Manual Access Avanzado

Introducción a los Formularios:

Hasta ahora hemos estado trabajando con los datos en el formato de tablas, al utilizarlas nos hemos encontrando con ciertas dificultades e incomodidades, como es ver solo una parte de los datos cuando no caben en la celda, el vernos obligados a utilizar las barras de desplazamiento.

Los formularios son una funcionalidad que tiene Access que permite mostrar y gestionar de una forma mas adecuada los registros para trabajar con ellos.La diferencia principal es que vemos a la vez todos los datos de un registro sin necesidad de utilizar las barras de herramientas. Otra diferencia es que la información puede mostrarse y organizarse en pantalla como deseemos y no en el formato de la tabla al que estamos habituados.Para acceder a los formularios solo hay que pulsar con el puntero del ratón en la opción "Formularios" situada en la ventana "Base de datos", en la parte de la izquierda, cambiando el contenido de la ventana "base de datos"

Creación de formularios mediante Asistente para formularios:

Access permite crear formularios tanto en "vista de diseño" como desde los "Asistentes".

26

Page 27: Manual Access Avanzado

Access proporciona una serie de asistentes para crear formularios que aceleran y facilitan mucho la creación de los formularios, con solo indicarle la tabla que queremos utilizar. Esto lo hacemos eligiendo en la ventana superior la tabla sobre la que deseamos crear el formulario

En la ventana inferior izquierda, titulada "Campos disponibles", tenemos un listado de todos los campos de la tabla, con los botones centrales podemos seleccionar los campos que deseemos tener en nuestro formulario uno a uno, utilizando el botón superior, o todos a la vez , pulsando el segundo botón. Podemos utilizar los dos botones inferiores para deshacer nuestras selecciones en el caso de que deseemos rectificar.Una vez que hayamos seleccionado los campos que deseemos que tenga nuestro formulario pulsaremos el botón "Siguiente".En la siguiente ventana de dialogo se nos preguntara por el tipo de distribución deseamos apicar al formulario

27

Page 28: Manual Access Avanzado

Nosotros vamos a elegir esta vez el diseño en columnas y pulsaremos siguiente. En la siguiente ventana se nos preguntara por el estilo que deseamos aplicar a nuestro formulario.

Lo que nos pregunta Access en este cuadro de dialogo es que tipo de decoración queremos aplicar a nuestro formulario, según posicionemos el cursor en uno u otro en la ventana de la izquierda se nos mostrara un ejemplo del fondo que podemos aplicar a nuestro formulario. Una vez que tengamos elegido el estilo, pulsaremos el botón siguiente.

28

Page 29: Manual Access Avanzado

En esta ventana se nos pregunta por el titulo que deseemos para nuestro formulario, así como si queremos abrir ya el formulario o si primero queremos modificar el diseño del formulario, esto ultimo lo dejaremos para la siguiente lección. Ahora pulsaremos el botón "Finalizar" y veremos como ha quedado nuestro formularioEste es nuestro flamante nuevo formulario

Como vemos, tenemos accesible todos los campos del registro, la forma de moverse por ellos es más natural y cómoda. Con los botones de la parte inferior de la ventana podemos movernos entre los distintos registros de la tabla, y con el botón de la derecha creamos un registro en blanco para introducir nuevos datos.

Propiedades avanzadas de las consultas :

Las propiedades aparecen en todos los elementos de Access, también en las consultas,

29

Page 30: Manual Access Avanzado

lo que permite aumentar el control sobre su funcionamiento.Para ver las propiedades de la consulta debemos tener abierta la consulta en ventana de vista de diseño

Y situando el cursor en la barra del titulo de la consulta, debemos pulsar el botón derecho del ratón, para abrir el menú emergente. Asegúrate de que no tienes marcado ningún campo, o tabla, en caso contrario en vez de mostrarte las propiedades de la consulta te mostraría únicamente las propiedades del campo señalado

Y en esta venta seleccionar la opción "propiedades".

30

Page 31: Manual Access Avanzado

De entre estas propiedades solo vamos a ver las mas importantes, si deseas más información del resto, puedes pulsar F1 después de situar el cursor en la casilla de la propiedad que te interese.Descripción: Aquí podemos describir someramente la consulta, es una gran ayuda cuando tenemos una gran cantidad de consultas o si ha pasado ya algún tiempo desde que la creamos.Mostrar todos los campos: Eligiendo "Si", mostrara todos los campos en la cuadricula de diseño, aunque tengan desmarcada la casilla "mostrar"Valores superiores: Es muy útil cuando tenemos tablas con muchos registros, si indicamos 5, solo aparecerán en la hoja de datos los 5 registros que tengan los valores mayor en el primer campo numérico que aparezca en la cuadricula de la ventana de diseño.Valores únicos: Si elegimos "Si", solo aparecerán en la hoja los valores de todos los campos que sean únicos.Registros únicos: Access nos mostrara valores sin repetir.Aunque a primera vista no nos parezca muy util este conjunto de opciones nos ayudara mucho en nuestro manejo diario de las consultas.

Campos Calculados :

Los campos calculados permiten utilizar, en la columnas de la vista de diseño de la consulta, información que no proviene de un campo, sino de una operación con valores de otros campos.Vamos a verlo mejor con un ejemplo, en nuestra tabla "producto".

31

Page 32: Manual Access Avanzado

Tenemos listados, el producto, el precio de la unidad y también las unidades en existencias.

Supongamos que necesitemos conocer cual es el valor total de los artículos que tenemos en el almacén. Sería sencillo calcular, el total de seria el resultado de multiplicar las "UnidadesEnExistencia" por el "PrecioUnidad" de cada articulo. Vamos a hacerlo, o mejor dicho, vamos a dejar que Access lo haga por nosotros.Como ya sabemos utilizar el asistente, vamos a aprender ahora a hacerlo desde al ventana de diseño.El primer paso, como siempre es acudir a la ventana de base de datos abrir la ventana de las consultas.

Y desde aquí

Vamos a pulsar la opcion crear una consulta en vista de diseño.En la ventana "Mostrar tabla" seleccionaremos la tabla "Productos"

32

Page 33: Manual Access Avanzado

Y una vez seleccionada, pulsaremos agregar.En la venta de "Consulta de seleccion", en su seccion superior, aparecera la tabla que hemos escogido "Productos", con todos los campos que la componen.Nosotros solo necesitaremos "NombreProducto" , "DescripcionProducto", "PrecioUndidad" y "UnidadEnExistencias".

Campos Calculados II:

Con el raton pincharemos sobre los campos que necesitemos y los "arrastraremos" hasta la cabecera de las columnas de la cuadricula

Vemos como automáticamente las filas "Tabla" y "Mostrar" se rellenan con solo situar en

33

Page 34: Manual Access Avanzado

la cabecera de cada columna el campo correspondiente.Pero aun falta el campo calculado. Dijimos que necesitábamos conocer cual es el valor total de los artículos que tenemos en el almacén. Deducimos que el total de seria el resultado de multiplicar las "UnidadesEnExistencia" por el "PrecioUnidad" de cada articulo.

Vamos a hacerlo paso a paso. Primero es elegir un campo vacio, y ponerle el nombre que desemos para nuestro nuevo campo, ¿Qué tal "Total"?

Ahora debemos escribir la expresión de calculo de la siguiente manera:Total: [ ]*[ ] , es importante que respetemos el espacio en blanco tras los dos puntos, dentro de los corchetes iran los nombres de los campos que queramos utilizar para los calculos.En definitiva, nuestra expresión quedaria asi; Total: [PrecioUnidad]*[UnidadEnExistencia]Por ultimo solo tendremos que marcar la opcion "mostrar" para visualizar el resultado cuando ejecutemos la consulta.

Pulsaremos el icono "Ejecutar", como ya sabemos y este será el resultado

Cálculos sobre las tablas :

También podemos realizar cálculos sobre todos los registros de una tabla sin tener que agruparlos por ningún concepto y sin condiciones de ningún tipo. Esta se puede utilizar para saber el total de.. Por ejemplo: el total de clientes, o el total de artículos que tenemos en el almacén, o el precio medio de las ventas del ejercicio. Vamos a realizar el conteo de los productos que tenemos en el almacén.Lo primero que haremos será crear una consulta a partir de la tabla "Productos". En la que solo seleccionaremos el campo "UnidadesEnExistencia", como ya debemos saber hacerlo.

34

Page 35: Manual Access Avanzado

Si ejecutamos la consulta obtendremos la siguiente ventana

Ahora en la venta vista de diseño de la consulta, sobre la cuadricula pulsaremos el botón derecho del ratón

Pulsaremos en Totales y veremos que en la cuadricula se ha agregado una nueva fila, llamada "Total". Por defecto aparecera con el valor "agrupar por"

35

Page 36: Manual Access Avanzado

Pero si desplegamos la persiana de las opciones de "Total", vemos que hay una larga lista de posibles ordenes para aplicar al campo.Nosotros, esta vez, queremos "Sumar" el total de las existencias, pero también podríamos averiguar el valor minino, el máximo, el valor promedio, entre otras muchas otras funciones.

Al ejecutar la consulta, este será el resultado.

Cálculos sobre los registros :

En los temas anteriores hemos utilizado todos los registros de la tabla, pero habrá situaciones en las que nos interesara obtener información, no de todos los registros de la tabla, sino solamente de un grupo de ellos. Por ejemplo ver el montante los productos que hemos vendido, pero agrupados por clientes, por ejemplo.Para conseguirlo vamos a crear otra tabla. Pero esta vez tendremos que elaborarla un poco mas que de costumbre. Por ahora vamos a crear la tabla tal como estamos acostumbradosVeamos, queremos saber el total de los productos que hemos vendido, agrupado por clientes.Entonces es evidente que necesitamos las tablas tanto de producto como de clientes.

36

Page 37: Manual Access Avanzado

Y en la cuadricula introducimos los campos que necesitamos manejarDe la tabla Clientes, necesitaremos el campo NombreCliente. Y en la tabla producto buscaremos el campo que nos aporte el dato que necesitamosEn este caso caso elegiremos el campo "UnidadEnExistencia", ¿Por qué elegimos el campo "UnidadEnExistencia" cuando queremos conocer el total de existencias que ha adquirido un cliente? ¿No seria mas lógico tener otro campo que se llame "unidades vendidas"?Bueno, una de las reglas principales en el uso de las bases de datos relacionales es, como vimos en las primeras lecciones, no duplicar NUNCA la información , y Access nos permite usar toda su potencia en nuestro beneficio Veámoslo mas detalladamente. Ya tenemos un campo que contiene las existencias de cada productoSi lo consultamos directamente obtendremos el total de las existencias del producto que poseemos. Pero ¿Qué pasa si relacionamos ese campo con los datos de otra tabla? ¿Por ejemplo la tabla Clientes?. ¿Qué es lo que obtendríamos entonces?Pues obtendríamos el total de existencias consumidas por ese clienteSi quisiéramos ubicar las existencias en un horizonte temporal, no necesitaremos crear otro campo para ello, bastaría con relacionar las existencias con un campo fecha de la tabla apropiadaEl mismo campo "existencias" de la tabla producto, puede aportarnos información diversa si la relacionamos con la tabla cliente ("existencias vendidas"), o con la tabla proveedor ("existencias compradas"), si tuviéramos una tabla de inspectores podríamos conocer ("existencias inspeccionadas"), todo ello habiendo introducido SOLO UNA VEZ los datos en el campo "existencias" de la tabla productosComo podemos ver, es importante dar nombres descriptivos a cada campo, no solo para entender fácilmente el tipo de datos que contiene, si no también para comprender como le puede afectar el ser relacionados con otras tablas

Pero, ATENCIÓN, Ambos campos son de tablas distintas, y en la sección superior de la ventana de diseño vemos que entre las dos tablas no hay ningún campo común, no hay

37

Page 38: Manual Access Avanzado

ningún vinculo entre las dos tablas.Si queremos relacionar dos tablas distintas, debemos tener algún tipo de referencia entre ellos. En este caso no tenemos ninguna, pero podemos tenerla fácilmente si agregamos la tabla "Pedidos" a la consulta. Esto podemos hacerlo en cualquier momento simplemente pulsando el botón derecho del ratón y eligiendo "Mostrar tabla"

Cálculos sobre los registros II:

En la siguiente ventana agregamos, como ya sabemos la tabla "pedidos"

Ya tenemos relacionadas las tablas "clientes" y "Producto", por medio de la tabla "Pedidos".Ahora terminaremos de rellenar las propiedades de la consulta en la cuadricula, agregando el campo totales tanto al campo "UnidadesEnExistencia" y "NombreCliente", tal como hicimos en el tema anterior

38

Page 39: Manual Access Avanzado

Pero esta vez, calcularemos la "Suma" para "UnidadEnExistencia", y aplicaremos "Agrupar por"para el campo "NombreCliente"

El resultado que obtendremos al ejecutar la consulta es el que sigue.

Crear consultas en vista de diseño convarias tablas

En este tema aprenderemos a crear consultas con varias tablas, casi todo lo que veremos en este tema ya lo hemos utilizado a lo largo de este curso para poder llevar a buen termino los ejemplos, así que es normal que nos resulte todo ello familiar, pero en este tema vamos verlo todo más organizadamente y paso a paso desde el principio.Vamos a partir de un ejemplo: Queremos averiguar el código del cliente, sus apellidos, el código del pedido y la fecha de la venta.Para ello necesitaremos manejar las tablas cliente y la tabla pedidos. El primer paso será crear la consulta, esta vez lo haremos utilizando el asistente.Pero primero tenemos que entrar en la venta de consultas, lo haremos pinchando en la opción "consultas" en la lista de objetos, que está en la ventana de "Base de datos"

En esta pantalla elegiremos crear la consulta utilizando el asistente, mas adelante la modificaremos en el caso de que sea necesario, desde la venta de diseño

En la ventana del asistente, lo primero es elegir la primera tabla desde la que queramos seleccionar los campos. Hemos dicho que nosotros necesitaríamos de la tabla Clientes, los campos "codigo cliente" y "Apellidos clientes"

39

Page 40: Manual Access Avanzado

El próximo paso, sin salirnos de esta ventana, es cambiar de tabla, ahora necesitamos los campos de la tabla pedidos. Para ello solo tenemos que desplegar la persiana de datos de la ventana "Tabla/consultas" y seleccionar la tabla "Pedidos"

Una vez seleccionada la tabla pedido, solo tenemos que añadir los campos "Codigo pedido" y "Fecha venta" a la lista de campos seleccionados tal como lo hicimos con los campos de la tabla "Clientes"

40

Page 41: Manual Access Avanzado

Ahora si podemos pulsar "Siguiente", y pasar por fin a la siguiente ventana. En esta ventana, que ya conocemos elegiremos detalle, pues queremos ver todos los campos y no un mero resumen.

Antes de ejecutar la consulta, vamos a ver como ha quedado desde la vista de diseño.

En esta venta vemos los campos que serán mostrados, los distinguimos porque están marcados en la casilla "Mostrar", en la sección superior de la ventana, podemos ver las tablas utilizadas, así como la relación que hay entre ellas.Pulsando en el botón ejecutar, que ya conocemos, obtenemos esta tabla como resultado

41

Page 42: Manual Access Avanzado

Gestionar combinaciones de tablas:

Access considera que dos tablas están "Combinadas" por una campo determinado cuando hay una relación entre dos tablas. Es fácil reconocerlo con un simple vistazo, dos tablas están combinadas cuando están unidas por una línea

Cuando se ejecuta una consulta de dos tablas combinadas, solo se muestran los registros que tengan iguales los campos por los que se realiza la combinación.Por ello es importante saber crear y eliminar combinaciones en las consultasSi las tablas seleccionadas para una consulta están relacionadas entre si, aparecen combinadas automáticamente. Aunque si no están relacionadas también podemos combinarla de la misma forma que conocemos: Arrastrando uno de los campos hasta el otro en el área de datos.

Aquí hemos combinado las dos tablas a través del campo "NombreProducto" con "ApellidoCliente", esto podría ser de utilidad en el caso de que queramos ofrecerle al cliente una gama de productos con su Apellido, por ejemplo.Su funcionamiento, a partir de ahora, es exactamente igual que si fuera una relación entre tablas. Con una salvedad, esta combinación solo es funcional en la consulta en la que ha sido definida. Ninguna otra consulta se vera afectada por esta combinación.Para eliminar la combinación, solo hay que posicionar el ratón sobre la línea que une las dos tablas y pulsar el botón derecho del ratón. Y en la ventana de dialogo que surge pulsar la opción eliminar

No olvides que si aparte de la combinación hay una relación entre las tablas, la relación persiste aunque eliminemos la combinación.Podemos agregar tablas a la consulta para establecer nuevas combinación fácilmente,

42

Page 43: Manual Access Avanzado

con solo pulsar el botón derecho del ratón y seleccionar la opción "Mostrar tabla"

Ya solamente tendremos que agregar la tabla o tablas que deseemos.

Eliminar una tabla que ya no utilicemos en una consulta es aun más sencillo, simplemente tenemos que pulsar el botón derecho del ratón sobre ella y seleccionar la opción "Quitar tabla".

Crear una consulta a partir de otra :

Este es un tema cortito que trata sobre una sofisticación bastante curiosa que nos permite desarrollar Access. Hasta ahora hemos utilizado tablas para crear las consultas, o como mucho datos de campos calculados.

Pero Access nos permite utilizar otras consultas como base para nuestras consultasLa razón de esto es fundamentalmente ahorrar trabajo a la hora de crear consultas. Por ejemplo, si ya tenemos creada una consulta sobre las ventas a un cliente, podemos aprovecharla para calcular el montante total de nuestro balance con él, y evitarnos así añadir varios campos y aplicar mas o menos criterios para obtener de nuevo los datos que ya poseemos en otra tabla.Simplemente tendremos que pulsar en la pestaña consulta de la venta "Mostrar tabla",

43

Page 44: Manual Access Avanzado

en la ventana de vista de diseño cuando creemos la consulta

Podemos crear consultas solo de consultas o también podemos cruzar datos de consultas con otros provenientes de tablas

No hay que olvidar que si utilizamos datos provenientes de consultas, no utilizaremos los datos originales, sino únicamente los datos que cumplan las condiciones expresadas en la consulta que estamos utilizando. Si olvidamos esto podemos llevarnos desagradables sorpresas con las salidas que nos proporcione Access

Las consultas de acción.:

Hasta ahora hemos estado utilizando las consultas de selección, estas se han caracterizado porque se extraía de una base de dato una información mediante un proceso de selección, a la vez que se desdeña la parte de la base de datos que no cumple los requisitos de nuestra selección.Pero hay otro tipo de consultas, llamadas consulta de acción, estas se caracterizan por que pueden afectar al contenido de los datos reales de una tabla, pueden crear nuevas tablas, añadir o borrar registros, o actualizar tablas.Este tipo de consultas son muy delicadas, pues si nos equivocamos o no hemos pensado bien como conseguir lo que pretendíamos podremos haber modificado irremediablemente la base de datos original, sin posibilidad de deshacer la acción.Vamos a crear paso a paso una consulta para crear tablas.Crearemos una consulta para que presente los datos con los que deseemos crear la nueva tabla

44

Page 45: Manual Access Avanzado

Ejecutaremos la instrucción "Consulta de creación de tabla "

Teclearemos el nombre de la nueva tabla en el cuadro de texto y pulsaremos "Aceptar"

Hasta que no pulsemos el botón ejecutar no se iniciara el proceso para crear la nueva tabla.En cuanto pulsemos Access nos mostrara una ventana para confirmar nuestra decisión

Y aquí esta la "TablaCreada" en la ventana de tablas de la "base de datos"

45

Page 46: Manual Access Avanzado

Al comienzo del tema dijimos que las consultas de acción no solo creaban tablas, sino que también podían crear registros, borrarlos o actualizar tablas.El funcionamiento de todos estos procesos son idénticos a lo ya explicado, el procedimiento difiere únicamente en el momento de crear la acción. En el menú desplegable podemos ver las distintas opciones que hay disponibles

Nosotros pulsamos la opción "Consulta de creación de tabla" para crear una tabla nueva, si hubiéramos querido actualizar la tabla, deberíamos haber pulsado la opción siguiente. Para crear registros solo debemos pulsar "Consulta de datos anexados", y para borrarlos "Consulta de eliminación."

Los Filtros:

Los filtros, como indica su nombre, sirven para filtrar los datos de los formularios de forma que muestre los registros de la tabla o consulta que cumpla las condiciones establecidas en el. Se accede a los filtros pulsando situando el ratón sobre la tabla y pulsando el botón derecho

46

Page 47: Manual Access Avanzado

Los filtros tienen otra función que no tiene tanto que ver con su nombre como la anterior. Los filtros también pueden utilizarse para ordenar los registros de una tabla.

El botón para ordenar ascendentemente, o descendentemente, se aplica al campo en que esté el cursor activo, y ordena todos los registros de la tabla según este criterio.En cambio el botón "Filtro por selección", tras haber colocado el cursor en el campo que queramos utilizar como base para filtrar la tabla. Por ejemplo si filtramos por "Microsoft"

47

Page 48: Manual Access Avanzado

Solo se mostraran los registros cuyo campo "Empresa" contenga la palabra Microsoft.El botón "Filtro por selección" funciona igual solamente que no necesitamos teclear nada, basta con situar el cursor sobre el valor por el que queremos filtrar la base de datos.

Otras opciones son "Filtro excluyendo la selección", por ejemplo en nuestro caso mostrarían todos los registros menos los de Microsoft.Y por ultimo, pero no menos importante, "Quitar filtro u orden". Es posible que en algún momento necesitemos tener otra vez visible todos los registros de la tabla, Simplemente acudiremos a esta opción para elloPara acabar con los filtros; veremos los "filtros de formularios". En la ventana de presentación del formulario, pulsaremos en el botón "filtro por formularios".

Aparecerá la ventana de presentación, pero vacía

Ahora pincharemos en el campo que queramos usar para definir el filtro, a la derecha del campo aparece una flecha.

48

Page 49: Manual Access Avanzado

Si pulsamos en ella, se despliega una cortinilla con todos los datos posibles para ese campo, que hay en la tabla.Podremos Teclear en los campos las expresiones que queramos usar para filtrar los datos. Y por ultimo aplicaremos el filtro

Asistentes para informesno automáticos I:

Para acabar con el curso vamos a aprender a usar los asistentes para informes no automáticos. Para ello vamos a crear paso a paso un informe sobre los productos. Primero pulsaremos el botón de informe de la ventana de base de datos.

Después pulsaremos en la opción crear un informe utilizando el asistente.

Aparecerá el asistente genérico que ya conocemos, seleccionaremos los campos que

49

Page 50: Manual Access Avanzado

necesitemos para nuestro informe, tal como ya sabemos.

Una vez que pulsemos "Siguiente", aparece un nuevo cuadro de dialogo, nos preguntara por el nivel de agrupamiento que deseamos.

Nosotros lo agruparemos por el Nombre de Producto. Podemos crear varios niveles de agrupamiento de forma anidada.

50