CAPÍTULO
3 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,
seleccionando Consultas 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.
FIGURA 3.1Ventana
Mostrar tabla de consulta.
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.
FIGURA 3.2 Barra de
herramientas de la ventana Consulta.
La figura 3.3 muestra
la estructura de la consulta que fue
denominada "Ingenieros de la
Empresa". 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.
FIGURA 3.3 Estructura
de la Consulta Ingenieros de la Empresa.
FIGURA 3.4 Hoja de
Datos de la consulta Ingenieros de la
empresa
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
R 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ínea Mostrar
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.
Los
ejemplos siguientes aclaran la cuestión.
- seleccionar todos
los ingenieros y que sean del
departamento de finanzas:
FIGURA 3.5 a.
- todos los
ingenieros o Empleados del
departamento de finanzas:
FIGURA 3.5 b.
- todos los
ingenieros de nivel 2 del
departamento de marketing o
ingenieros nivel 2 con nombres
comenzados por la letra R.
FIGURA 3.5 c.
FIGURA 3.5 (a) (b) (c)
Selecciones comprendiendo mas de un
campo.
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, conforme a la figura
3.6.
FIGURA 3.6 Consultas
sin y con valores exclusivos
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 tabla PADRÓ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 del Có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 nombre SiInm. 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.
FIGURA 3.7 Consulta
comprendiendo varia tablas
FIGURA 3.8 Hoja de
datos de consulta comprendiendo varias
tablas.
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ón Contar.
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.
El ejemplo
de la figura 3.9 muestra la obtención
del total de Empleados por cargo dentro
de cada departamento. Para cada entrada
en esta consulta también es presentada
la suma de los salarios.
En la figura 3.10 de la
hoja de datos se observa que la columna
con el total de los salarios posee
leyenda y está en formato moneda. Estas
características fueron definidas
seleccionando la columna salario
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).
FIGURA 3.9 Consulta
incluyendo totales.
FIGURA 3.10 Hoja de
datos de consulta incluyendo varias
tablas
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.
FIGURA 3.11 Estructura
de la consulta de Referencia Cruzada
FIGURA 3.12 Hoja de
Datos de la consulta de Referencia
Cruzada
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 campos Número
de gerente y Número de
empleado son iguales.
FIGURA 3.13 Consulta
para campos asociados iguales.
Al picar
sobre la línea de asociación aparece la
ventana Propiedades de Asociación,
conforme a la figura 3.14.
FIGURA 3.14 Ventana
para definir el tipo 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. La hoja de datos correspondiente
aparece en la figura 3.15.
FIGURA 3.15 Hoja de
datos para asociación tipo 1
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. La hoja
de datos correspondiente aparece en al
figura 3.16.
FIGURA 3.16 HOJA de
datos para la asociación tipo 2.
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.
FIGURA 3.17 Hoja de
datos para la asociación tipo 3
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. La figura 3.18
muestra la estructura y la ventana de
solicitud del parámetro.
FIGURA 3.18 Consulta
con parámetro
|