relaciones y consultas
DESCRIPTION
aqui encontraras lainformacion para saber mas sobre las relaciones y consultas de accessTRANSCRIPT
RELACIONES.
Es común que informaciones de una tabla estén asociadas con informaciones de otras tablas. En
este caso podemos establecer una relación entre las dos tablas. Es a través de la relación que
el Access consigue, a partir de informaciones en una tabla, obtener informaciones registradas
en la otra tabla. Existen tres tipos de relaciones entre dos tablas A y B: uno – a – uno, uno – a –
varios, varios – a – varios.
2.1. - Relaciones uno a uno.
La relación uno a uno ocurre cuando un registro de la tabla A posee como máximo un registro
asociado en la tabla B y un registro de la tabla B posee como máximo un registro asociado en la
tabla A.
Esta relación está presente en el número de gerente/número de empleado, entre el PADRÓN
DE DEPARTAMENTOS y el PADRÓN DE EMPLEADOS. Para cada número de gerente
identificamos apenas un registro en el PADRÓN DE EMPLEADOS y cada funcionario es
eventualmente gerente de apenas un departamento.
2.2 - Relaciones uno a varios.
La relación uno a varios ocurre cuando un registro de la tabla A puede tener mas de un registro
asociado en la tabla B, mientras que, un registro de la tabla B posee como máximo un registro
asociado en la tabla A.
Esta relación está presente en la sigla del departamento entre el PADRÓN DE
DEPARTAMENTOy el PADRÓN DE EMPLEADOS. Para cada sigla del PADRÓN DE
DEPARTAMENTOSidentificamos varios registros con esta sigla en el PADRÓN DE
EMPLEADOS, mientras que, para cada sigla en el PADRÓN DE EMPLEADOS identificamos
como máximo un registro en elPADRÓN DE DEPARTAMENTOS.
También debe quedar claro que, en principio, podemos tener departamentos sin funcionarios y
funcionarios que momentáneamente no están asignados a ningún departamento.
2.3. - Relaciones varios a varios.
La relación varios a varios ocurre cuando un registro de la tabla A puede tener mas de un
registro asociado en la tabla B y, análogamente, un registro en la tabla B puede tener mas de
un registro asociado en la tabla A.
Los cargos ocupados por un empleado a lo largo del tiempo constituyen una relación de esta
naturaleza. Cada empleado ocupó varios cargos y un cargo fue ocupado por diversos empleados.
En esta relación queda inmediatamente aparente que al par empleado/cargo probablemente
estarán asociadas otras informaciones, por ejemplo, la fecha en que el empleado asumió el
cargo en cuestión.
Relaciones de este tipo varios a varios no pueden ser especificadas directamente en Access. Es
necesario la creación de una tabla intermediaria que en nuestro caso podría tener el
nombre: cargos ocupados. Cada registro en esta tabla sería compuesto de tres campos:
Número de empleado, Código del cargo y Fecha de admisión a este cargo. Como se observa, se
creó una relación uno a varios entre el PADRÓN DE EMPLEADOS y el PADRÓN DE CARGOS
OCUPADOS y, análogamente, otra relación uno a mucho entre el PADRÓN DE CARGOS Y
SALARIOS y elPADRÓN DE CARGOS OCUPADOS. Por lo tanto una relación varios a varios es
convertida en dos relaciones una a varios cuando hubiera informaciones asociadas a los pares
relacionados.
2.4. - Creación de relaciones.
En Access podemos crear relaciones localizadas, utilizadas en una consulta especifica,
orelaciones globales que posiblemente tendrán un uso más general. Relaciones de uso
localizado serán vistas mas adelante en el capítulo referente a consultas.
Las Relaciones de uso general son útiles porque pueden ser usadas automáticamente en nuevas
consultas, facilitan la generación de subformularios y subinformes y permiten un cierto grado
de protección en operaciones de actualización al imponerse la integridad referencial para las
relaciones como será visto mas adelante.
La creación y edición de relaciones es hecha en la ventana Relaciones como muestra la figura
2.1. En esta ventana se muestra el diagrama de relaciones entre las tablas. Para cada tabla son
mostrados sus campos y líneas de asociación con campos de otras tablas. Estas líneas
representan las relaciones.
Para exhibir la ventana Relaciones, se pica en el botón Relaciones de la barra de herramientas
de la ventana Base de Datos. En respuesta aparece la ventana acompañada de la ventana de
diálogoMostrar tabla. Si el diálogo no aparece, basta cliquear el botón Mostrar tabla en la
barra de herramientas. En el caso fueron adicionadas tres tablas anteriormente construidas.
Las tablas adicionales pueden ser arrastradas y redimensionadas hasta que queden visualmente
legibles.
Para crear una relación entre el PADRÓN DE DEPARTAMENTOS y el PADRÓN DE
EMPLEADOS, picar sobre el campo Sigla del departamento en la tabla PADRÓN DE
DEPARTAMENTOS y se arrastra asta el campo Sigla del departamento en la tabla PADRÓN
DE EMPLEADOS. En respuesta surge la ventana de diálogo de relaciones Para que sean
provistas mas especificaciones sobre la ligazón en cuestión. En el caso que se desee alterar
posteriormente estas especificaciones basta dar un doble clic sobre la línea de unión, esto
hace aparecer la ventana de diálogo relaciones.
En el caso que se desee Exigir la integridad referencial para imposibilitar el empadronamiento
de empleados en departamentos inexistentes en el PADRÓN DE DEPARTAMENTOS. Al
activar esta opción pasa a ser necesario especificar también cual es el tipo de relación El tipo
uno a varios ya aparece seleccionado porque es el padrón del Access. Además de eso, es
necesario indicar si desea guardar el layout de esta ventana. Conviene guardarlo si una nueva
distribución de las tablas fuera visualmente mas adecuada. Se debe observar que el diseño de
las relaciones indica si él es del tipo uno a varios (algoritmo 1 y símbolo de infinito 8) o un a uno
(algoritmo 1). Los bordes más gruesos de la línea de unión indican que la integridad referencial
fue impuesta por la relación.
2.5. - Borrado de relaciones.
Para borrar una relación basta seleccionar la línea de unión y accionar la tecla DEL.
Para borrar una tabla basta seleccionarla y accionar también la tecla DEL.
Es importante recordar que la eliminación de una tabla no borra la relación. Si la ventana
relaciones fue cerrada y accionada de nuevo, entonces la tabla borrada es mostrada
nuevamente con todas sus relaciones. Por lo tanto, para borrar una relación es necesario
seleccionar la relación explícitamente y accionar DEL, enseguida se borra la tabla.
Se puede borrar todo el contenido de la ventana Relaciones. Para eso, basta en el
menú Ediciónaccionar Borrar diseño. Pero esto no borra las relaciones registradas
Internamente. Enseguida se puede adicionar una tabla y utilizar el botón de la barra de
herramientas. Mostrar todas relaciones directas para exhibir apenas las relaciones
directamente asociadas a la tabla. Para exhibir todo, accione el botón Mostrar todas las
relaciones.
CONSULTAS
3.1. – Definición.
Una consulta recupera informaciones de la Base de Datos y eventualmente las presenta en la
pantalla. Serán estudiados tres tipos de consultas:
De selección: selecciona y presenta registros en formato patrón
De referencias cruzadas: selecciona y presenta registros en formato de planilla
De acción: altera el contenido de registros en una única operación
Los registros seleccionados constituyen un conjunto. Este conjunto es dinámico en el sentido
de que su contenido tiene por origen varias tablas y con el sentido de solo existir mientras la
consulta esté activa. Al cerrar una consulta, el conjunto de registros deja de existir. Esto
constituye una gran ventaja pues si alteramos los datos de una tabla las consultas sobre ella
automáticamente reflejarán esas alteraciones.
Las consultas constituyen un recurso práctico para obtener informaciones específicas
contenidas en la Base de Datos. Con ellas podemos:
Elegir campos específicos de tablas específicas;
Seleccionar informaciones vía criterios;
Mostrar las informaciones en varios órdenes;
Obtener datos de varias tablas simultáneamente;
Calcular totales;
Crear formularios e informes;
Crear otras consultas y gráficos.
3.2. – Generar una nueva consulta.
La obtención de una nueva consulta es hecha a partir de la ventana Base de Datos,
seleccionandoConsultas y picando en la opción Nuevo. En respuesta aparecerá un cuadro de
diálogo que le permite a Ud. elegir el modo de cómo, la consulta, debe ser construida. O Ud.
mismo monta la consulta a través del modo Vista Diseño o Ud. utiliza los Asistentes, que
facilitan el montaje tanto de consultas como de informes, formularios, etc.
Al elegir el modo Vista Diseño, aparecerá la ventana Consulta de Selección sobrepuesta con la
ventana de diálogo Mostrar tabla. Para cada tabla o consulta a adicionar, seleccione su nombre
y pique en el botón Agregar. En el caso que se adicione una tabla / consulta equivocada, basta
seleccionarla y apretar DEL para borrarla del área de tablas.
La activación de la ventana de diálogo Mostrar tabla también puede ser realizada a través del
menúConsulta opción Mostrar tabla o por el botón correspondiente en la barra de
herramientas.
La ventana Consulta Selección posee dos áreas, el área de las tablas envueltas en la consulta y
el área de la consulta propiamente dicha. En esta última área el montaje de la consulta es
hecho a través del esquema QBE (Query By Example). En este esquema creamos las consultas
arrastrando campos del área superior de la ventana para el área inferior. En la planilla QBE
cada columna contiene informaciones al respecto del campo incluido en la consulta.
Al accionar la ejecución de la consulta aparece el resultado presentado en la figura 3.4. Esta
figura muestra que el resultado es presentado en una hoja de datos que, en principio, puede
ser también usada para alterar y excluir registros.
3.3. – Adicionar campos a la consulta.
Inicialmente se debe seleccionar los campos en la tabla. Se Puede seleccionar varios campos
picando y apretando simultáneamente SHISFT o CTRL. Enseguida, apuntar para alguno de los
campos seleccionados y arrastrarlo para la línea Campo: en el área inferior.
También es posible adicionar un campo seleccionándolo desde el Campo en el área inferior.
Basta abrir el cuadro de combinaciones que aparece cuando el punto de inserción está
posicionado en el área del Campo y elegir entre los campos listados.
Para adicionar todos los campos de la tabla a la planilla QBE es necesario inicialmente
seleccionar todos los campos. Hay un atajo para esta tarea: basta picar dos veces en la barra
de título de la tabla. Otro método consiste en el arrastre de la línea de asterisco (*) de la
tabla para algún campo de la parte inferior. Mientras tanto, en este caso él arrastra toda la
tabla y produce un efecto secundario interesante: en caso que la tabla vaya a ser alterada en
su estructura, por adición/exclusión de campos, no será necesario rehacer la consulta. Por otro
lado, campos QBE basados en asterisco no admiten criterio de clasificación y selección.
Para insertar un campo entre otros ya existentes en la planilla QBE basta arrastrar un campo
seleccionado, en la parte superior, para el campo que quedará a la derecha del campo insertado.
Para reordenar campos en la planilla QBE basta seleccionar y arrastrar para otra posición. Para
eliminar un campo, basta seleccionar y dar DEL. Para remover todos los campos de la planilla
use la opción Borrar cuadrícula del menú Edición.
El texto que identifica columnas, en la hoja de datos, es el nombre del campo. Muchas veces
ese nombre es largo y se desea substituirlo por otro. Para ello basta preceder al nombre del
campo en la planilla QBE con el nombre deseado seguido de dos punto. Ejemplo: Cargo: Código del cargo. Mientras tanto, si la columna posee la propiedad leyenda esta tendrá prioridad.
Eventualmente si es necesario utilizar un campo en una consulta sin que haya necesidad de
mostrarlo en la hoja de datos, por ejemplo, cuando ese campo participa de la llave de
clasificación. En este caso basta desactivar la marca de Mostrar correspondiente en la
planilla QBE.
3.4. – Clasificación de los datos presentados.
Basta especificar el orden de clasificación (creciente o Decreciente) de los campos que hacen
parte de la llave de clasificación. Observar que el orden de los campos pasa a ser importante y,
eventualmente, es necesario reordenar las columnas en relación a su orden en la tabla original.
Nada impide que un campo de la tabla concurra dos o mas veces como campo en la planilla QBE.
Eventualmente esa puede ser una solución interesante para poder usar el campo en la llave de
clasificación (donde su posición es fija) desactivando su presentación en la línea Mostrar; la
segunda versión del campo es exhibida en la posición deseada por el usuario. El mismo efecto
puede ser utilizado en conjunto con campos de la planilla QBE oriundos de asterisco.
Como no es posible usar criterios de selección y clasificación para campos asterisco (*), basta
incluir un duplicado de los campos necesarios. Para esos campos duplicados son establecidos los
criterios de clasificación y selección concomitantemente con la desactivación de su
presentación en la líneaMostrar de la planilla QBE
3.5. – Grabar e imprimir consultas.
Para grabar la consulta, use las opciones Guardar y Guardar como o Exportar del menú Archivo.
Para imprimir la consulta debemos estar en la hoja de datos y accionar Vista preliminar para
ver el layout de la hoja a ser impresa. La opción Imprimir del menú Archivo realiza la impresión
permitiendo eventualmente imprimir apenas los registros seleccionados en la hoja de datos.
Para eso, basta elegir la opción Registro Seleccionados como Intervalo de Impresión.
3.6. – Criterios de Selección conteniendo un único campo.
Como criterio de selección en la planilla QBE podemos emplear diversos tipos de expresión
envolviendo diversos tipos de funciones internas. El resultado de algunos criterios ejemplos es
presentado a continuación. :
>520 todos los números mayores a 520
entre 520 y 1528 todos los números entre 520 y 528 inclusive
="Carlos Moreira" todos los exactamente iguales a
"S*" todos los iniciados con la letra S
"fe*eira" por ejemplo: ferreira, fereira, festeira
"sm?th" por ejemplo: smith, smyth
"* * *" nombres de tres palabras separadas por un blanco
*/*/93 todas las fechas del 93
negado como "S*" todos los nombres no iniciados por S
>=1-ene-92 y <=20-feb-93 todas las fechas del intervalo
"S*" o "R*" todos los iniciados por la letra S o R
nulo todos los registros con campo nulo
negado nulo todos los registros con valor en el campo
fecha() todos con la fecha actual
entre fecha() y fecha()-7 todos con fecha de la última semana
3.7. – Criterios de selección comprendiendo mas de un campo.
En este caso se emplean las líneas Criterio: , o: y líneas siguientes de la planilla QBE. Se debe
observar la siguiente regla para definir expresiones entre varios campos:
Expresiones ligadas por y quedan en la misma línea
Expresiones ligadas por o quedan en líneas diferentes.
3.8. – Selección con valores únicos sin repetición.
Si el problema es el de exhibir los cargos constantes del PADRÓN DE EMPLEADOS. En
principio basta mostrar una consulta simple, incluyendo apenas el Código del cargo.
Como se observa hay repetición de valores, pues todos los registros fueron seleccionados y
apenas el campo Código del cargo es presentado. Para listar sin repetición se debe indicar que
la selección debe omitir valores repetidos. Para ello se debe accionar en la pantalla de proyecto
(modo Vista diseño) el menú Ver opción Propiedades o picar en el botón correspondiente.
En la ventana de diálogo que aparece enseguida, activar la opción Valores únicos.
3.9 – Consultas con múltiples tablas.
Es común que los datos para una consulta se localicen en diversas tablas. Por ejemplo, la
tablaPADRÓN DE EMPLEADOS hace referencia al Código de cargo del funcionario, pero no
especifica su salario, pues en la empresa ejemplo, el salario es función apenas del cargo.
De esta forma, el salario correspondiente a cada cargo (Salario del cargo)consta solamente en
la tabla PADRÓN DE CARGOS Y SALARIOS.
Si deseamos hacer una consulta que presente el Nombre del empleado y su Salario (Salario del cargo)será necesario la referencia a las dos tablas. Además de eso, es necesario
informarle al sistema cómo las informaciones se ligan entre las tablas, en este caso, la relación
es a través delCódigo del cargo que consta en las dos tabla. Esa relación es establecida en el
modo diseño de la consulta después de haber adicionado las dos tablas en la parte superior.
Para hacer la relación, basta picar sobre la línea Código del cargo en la tabla PADRÓN DE
EMPLEADOS y arrastrar hasta que el icono quede sobre la línea Código del cargo en la
tabla PADRÓN DE CARGOS Y SALARIOS. Si los campos comprendidos poseen el mismo
nombre en las dos tablas entonces el Access intentará establecer la relación automáticamente.
De la misma forma, en el caso en que ya hayan sido establecidas las relaciones entre las dos
tablas en la ventana relaciones, entonces al adicionar las tablas en la ventana de proyecto de
consultas automáticamente aparecerá la línea de relación entre los campos relacionados.
Finalmente especificamos en la planilla QBE cuales son los campos a incluir en la consulta.
El Nombre del empleado
El Salario del cargo
El descuento del 8% sobre el salario.
El último campo es un campo computado cuya descripción se inicia con la palabra descuento
seguida de dos puntos. Esta será la leyenda de la columna. El cálculo efectuado envuelve la
siguiente expresión.
Cmoneda(IIf(Esnulo([salario del cargo]);0;[salario del cargo]*0,08))
Esta fórmula envuelve varias funciones internas del sistema. Inicialmente se debe observar
qué campos son los comprendidos en las expresiones; pues precisan estar entre corchetes, por
esta razón se debe escribir [salario del cargo].
La función IIf es una función del tipo IIf(x;y,z) donde x es un test e y y z son los resultados
que la función provee. Si el test da verdadero, entonces devuelve el resultado y, si el test da
falso, entonces devuelve z. En nuestro caso, es necesario testear el campo salario del cargo
pues podemos tener funcionarios sin cargo. De esta forma, es hecho un test para verificar si el
campo tiene valor nulo.
Observar que al digitar IIf, el nombre de la función es automáticamente substituido por el
nombreSiInm. Observar también que el hecho de que el salario no exista es que está siendo
testeado por la función Esnulo y no que el valor del salario valga cero.
Si no existiera el salario entonces devuelve cero como descuento. Si el salario existe entonces
él es empleado para calcular 8% sobre él. Tanto un resultado como el otro acaban siendo
alimentados en al función Cmoneda que convierte ese resultado en formato interno para
formato moneda y que es finalmente presentado en la hoja de datos.
La fórmula para el cálculo de los descuentos fue digitada directamente en la columna QBE por
lo tanto, podría haber sido construida con el auxilio del botón Generar que acciona
el Generador de expresiones.
3.10. – Totalizaciones.
Es posible obtener totales en consultas. Podemos contar el número de ocurrencias de
registros, obtener sumas, promedio, mínimos, máximos, etc. Para obtener totales es
necesario incrementar una línea Total en la planilla QBE lo que es hecho por el botón
sumatoria ? en la barra de herramientas o menú Ver opción Totales.
En la línea Total para cada campo de la consulta deberá ser especificado el tipo de totalización
deseada. Por ejemplo, si el campo sirve apenas para contar registros, debemos elegir la
opciónContar. Si el campo tuviera que sumar, se selecciona Suma. Por otro lado, siempre habrá
campos que van a controlar el argumento de los registros, por ejemplo, si deseamos totales por
departamentos, en nuestro caso para el del Nombre del departamento,
especificaremos Agrupar por.
Para obtener totales de subagrupamientos basta incluir en la secuencia correcta a los campos
que dan origen a los grupos y subgrupos indicando el orden de clasificación más conveniente.
Estas características fueron definidas seleccionando la columnasalario del cargo en la ventana
de diseño de la consulta y accionando el botón propiedades en la barra de herramientas. En la
ventana Propiedades del campo fueron especificados: el formato moneda, lugares decimales
automáticas y titulo Suma (agregar en la tabla PADRÓN DE EMPLEADOS algunos registros
con el mismo cargo en el mismo departamento).
3.11 – Tablas cruzadas.
Las totalizaciones vistas anteriormente también pueden ser obtenidas a través de consultas de
referencia cruzada. La figura 3.11 muestra la construcción de una consulta de este tipo en la
ventana Consulta de Tablas de Referencia Cruzada accionada por el botón correspondiente en
la barra de herramientas.
En este tipo de consulta se debe indicar cual es la información que caracteriza filas y
columnas.
Esto es indicado en la fila Referencias cruzada: Encabezado de fila, Encabezado de columna o
valor. En el ejemplo, el campo número de empleado fue usado como valor para indicar la cuenta
de los empleados del departamento y cargo. Además de eso, es necesario indicar en la línea
total cómo cada campo debe ser computado. La sigla del departamento y el código del cargo son campos de agrupamiento y el número de empleado indica simplemente un contador.
Cuando se crea una nueva consulta de re referencia cruzada por primera ves podría ser
conveniente, para una mejor comprensión del procedimiento de construcción de este tipo de
consulta, la utilización del asistente para consultas de referencias cruzadas.
3.12 - Propiedades de la Asociación.
Cuando se construye una relación entre dos tablas en una consulta es necesario especificar
cual es el tipo de asociación deseada. Esta cuestión puede ser observada en la consulta que
relaciona para cada departamento (PADRÓN DE DEPARTAMENTO) el nombre de su gerente
(PADRÓN DE EMPLEADO). La figura 3.13 muestra la estructura de esa consulta que envuelve
dos tablas y una asociación entre el Número de gerente y el Número de empleado (fue quitada la relación, general, entre siglas del departamento). Vale la pena
destacar que los dominios de los ambos camposNúmero de gerente y Número de empleado son iguales.
Al picar sobre la línea de asociación aparece la ventana Propiedades de Asociación
En esa ventana está activa la primera opción, lo que indica que en la hoja de datos de la
consulta solo irán a aparecer las informaciones de campos de las dos tablas para registros
donde el número del gerente y el número del empleado fuesen iguales.
Por otro lado, si deseamos que aparezcan todos los departamentos igualmente aquellos que no
poseen gerente o cuyo número de gente por alguna razón no ocurra en el PADRÓN DE
EMPLEADOS, entonces debemos activar la opción que incluye todos los registros del PADRÓN
DE DEPARTAMENTOS. Observar que en este caso la línea de asociación se transforma en un
vector que va del PADRÓN DE DEPARTAMENTOS al PADRÓN DE EMPLEADOS.
finalmente es posible relacionar todos los empleados del PADRÓN DE EMPLEADOS
acompañados de su eventual registro asociado en el PADRÓN DE DEPARTAMENTOS (en el
caso que sean gerentes). En este caso es necesario elegir la tercera opción en la ventana
Propiedades de Asociación. Observar que en esta caso la línea de asociación se transforma en
un vector que va del PADRÓN DE EMPLEADOS para el PADRÓN DE DEPARTAMENTOS. La
hoja de datos correspondiente aparece en la figura 3.17.
3.13 – Consultas con parámetros.
Podemos construir consultas cuyos criterios de selección pueden ser provistos cuando la
consulta es ejecutada. Por ejemplo, podemos pedir al usuario que provea la Sigla del departamento de los empleados que desea listar en la pantalla. Para esto construimos una
consulta normal de selección, por ejemplo, a partir de la tabla PADRÓN DE EMPLEADOS y en
la línea Criterio del campo Sigla del departamento especificamos un mensaje entre
corchetes: [Informar sigla del departamento al listar]. Este mensaje es presentado a través
de una ventana de información de parámetro donde el usuario debe digitar la sigla deseada.
Solo los registros con esta sigla serán listados.