Vous êtes sur la page 1sur 8

CONSULTAS (I)

1
Vamos a desarrollar una aplicacin para practicar los
siguientes tipos de consultas:
Consulta de seleccin
Consulta de parmetros
Consultas en cascada
Consulta de tablas de referencias cruzadas
Adems de los ingredientes anteriores para nuestro guiso vamos a ir aderezndolo con
filtros, ordenaciones, agrupaciones y campos calculados !spero "ue el resultado final sea
comestible :#
Antes de empezar directamente con las consultas vamos a necesitar crear algunas tablas $en
las cuales crearemos los campos m%nimos necesarios# &o nos detendremos en analizar las
relaciones $eso podr%a ser un e'ercicio para vosotros# Vamos all:
TABLAS NECESARIAS
(abla (Alumnos:
(abla (Cursos:
(abla ()revision*ngresos:
(abla (+atriculas:
, -a ./ de e'emplo os la pod0is ba'ar a"u%
,
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
(abla (&otas:
4a tenemos la base para empezar a traba'ar con consultas !videntemente rellenamos las
tablas con datos 5i "uer0is seguir fidedignamente la ./ de e'emplo os pongo a"u% los
registros de las tablas:
6
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
CONSULTA DE SELECCIN
Vamos a 1acer una primera consulta de seleccin -o "ue
nos interesa saber es los nombres de los alumnos y de "u0
curso se 1an matriculado A esa consulta la vamos a llamar
CAlumnosCurso
,7 Creamos una consulta en vista dise8o A8adimos las
siguientes tablas:
(Alumnos
(Cursos
(+atriculas
67 Vamos a establecer las relaciones entre estas tablas Cogemos el campo *dAl $(Alumnos# y
lo arrastramos sobre *dAlumno $(+atriculas# Veremos "ue a1ora ambos campos estn unidos
por una l%nea
Cogemos el campo *dCurso $(+atriculas# y lo arrastramos sobre el campo *dCur $(Cursos#
97 Arrastramos al grid de la consulta, por este orden, los siguientes campos:
&omCurso $(Cursos#
Apellidos $(Alumnos#
&ombre $(Alumnos#
5i a1ora e'ecutamos la consulta veremos los cursos y "u0 alumnos se 1an matriculado en cada
uno de ellos
Un poquito ms difcil
5in embargo, esta informacin es un poco bruta Vamos a aplicar un criterio de ordenacin
para me'orar su aspecto &os vamos al grid de nuestra consulta, al campo &omCurso, y en la
l%nea "ue pone :rden: le marcamos Ascendente
5i a1ora e'ecutamos la consulta vemos "ue los cursos se 1an ordenado alfab0ticamente, lo
cual me'ora la percepcin de la informacin
A;n as% todav%a falta algo Vamos a establecer un segundo criterio de ordenacin &os vamos
al campo Apellidos y lo ordenamos tambi0n Ascendente
A1ora s%, tenemos los cursos ordenados y, dentro de cada curso, los alumnos ordenados por
apellido
4a tenemos nuestra consulta perfecta
CONSULTA DE SELECCIN CON FILTRO SENCILLO
Vamos a aplicar un filtro muy sencillo a nuestra consulta reci0n creada )ara ello, copiamos
CAlumnosCurso y la pegamos con el nombre CAlumnosCurso<iltrado
-a idea es "ue "ueremos "ue slo nos muestre los datos correspondientes al curso de Access
)ara ello:
,7 Abrimos CAlumnosCurso<iltrado en vista dise8o
9
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
67 !n el grid de la consulta, ba'o el campo &omCurso y en la l%nea Criterios: escribimos lo
siguiente:
Access
5i a1ora e'ecutamos la consulta veremos "ue los resultados
son los esperados
CONSULTA DE PARMETROS
-a consulta anterior, salvo "ue necesitemos siempre un informe del
curso de Access, es un poco limitada Vamos a conseguir una
consulta un poco ms fle=ible utilizando un parmetro
)ara ello copiamos la consulta inicial CAlumnosCurso y la pegamos con el nombre de
CAlumnosCurso)arametro
Vamos a aplicar el parmetro:
,7 Abrimos CAlumnosCurso)arametro en vista dise8o
67 !n el grid de la consulta, ba'o el campo &omCurso y en la l%nea Criterios: escribimos lo
siguiente:
>?Curso@A
5i a1ora e'ecutamos la consulta nos aparecer un cuadro de dilogo "ue nos solicitar el
nombre del curso "ue "ueremos filtrar -e escribimos el nombre del curso y podremos ver los
resultados
Un poquito ms difcil
4 a1ora es cuando viene nuestro2a 'efe2a y, con prisas $Bpara ayerC#, nos pide si un tal &esito,
o &ec3pito, o algo as%, est en el curso de Dord )odr%amos evidentemente sacar un listado
de todos los alumnos "ue estn en Dord y mirar si 1ay alguien matriculado con ese nombre $o
parecido# )ero nosotros somos ms eficientes y no slo le vamos a decir si est en Dord o
no, sino "ue adems le diremos, si no lo estuviera, en "u0 curso esta
)ara ello copiamos la consulta CAlumnosCurso y la pegamos con el nombre
CAlumnosCurso)arametro6
,7 -a abrimos en vista dise8o y nos vamos, en el grid de la consulta, al campo &ombre !n la
l%nea de criterios escribimos lo siguiente
Como EFE G >EContiene las letras:EA G EFE
A1ora, cuando e'ecutemos la consulta, nos pedir "u0 letras contiene el nombre a buscar 5i
escribimos lo ;nico "ue tenemos claro, "ue es &e, veremos los resultados
CONSULTA CON CAMPOS CALCULADOS
?He aprobado@ He a1% la gran pregunta "ue una gran mayor%a de todos nosotros se 1a
planteado alguna vez $o muc1as# en su vida Vamos a ver si nuestros alumnos 1an aprobado
Vamos a crear una consulta llamada C+edias&otas -a creamos en vista dise8o y
,7 A8adimos las siguientes tablas: (Alumnos y (&otas
I
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
67 Jelacionamos el campo >*dAlA de la tabla (Alumnos con el campo >*dAlumno&otaA de la
tabla (&otas
97 !n el grid de la consulta colocamos, de (Alumnos, los
campos >&ombreA y >ApellidosA, y de (&otas colocamos los
campos >!=amen,A, >!=amen6A y >!=amen9A
I7 Aun"ue se podr%a 1acer directo, vamos a sacar la media
utilizando dos campos calculados $y as% practicamos un
poco# &os situamos en la primera columna vac%a y
escribimos lo siguiente en la l%nea Campo:
5um&otas: >!=amen,AK>!=amen6AK>!=amen9A
L7 &os situamos en la siguiente columna vac%a y escribimos ya la e=presin "ue nos dar la
media As%, debemos escribir lo siguiente:
+edia: >5um&otasA29
5i a1ora e'ecutamos la consulta veremos las medias y sabremos "ui0n 1a aprobado y "ui0n
no
5in embargo, el formato "ue nos muestra es muy feo Vamos a corregirlo
M7 Volvemos al dise8o de la consulta y nos situamos sobre el nuevo campo >+ediaA Clic3 con
el botn de la derec1a y sacamos sus propiedades
N7 !n formato, seleccionamos "ue "ueremos el valor <i'o, y en posiciones decimales le
decimos 6
5i a1ora volvemos a e'ecutar la consulta podremos ver "ue los resultados son ms guapos
Un poquito ms difcil
&uestra2o 'efa2o aparece por la puerta y con cara de desespero nos dice dulcemente: B-os
boletinesC B?Has preparado los boletines@C -e decimos "ue s%, por supuestoO
Vamos a utilizar la funcin 5i*nm $**f# para poner las notas )ara ello, vamos a copiar la
consulta C+edias&otas y la pegaremos con el nombre de C+edias&otas.oletin Pna vez 1ec1o
esto vamos a aplicar el siguiente criterio: si la nota es igual o superior a L saldr A)J:.A/:, y
si es inferior saldr 5P5)!&/*/:
,7 &os vamos a la siguiente columna vac%a y escribimos lo siguiente:
.olet%n: 5i*nm$>+ediaAQLRE5P5)!&/*/:EREA)J:.A/:E#
5i a1ora e'ecutamos la consulta ya tenemos nuestro bolet%n preparado $y la2el 'efa2e
contenta2o#
CONSULTAS EN CASCADA
Cuando creemos "ue ya la cosa est ms tran"uila aparece de nuevo nuestra2o bienamada2o
'efa2e y e=clama $despu0s de felicitarnos por nuestro gran traba'o, claro#: ?/nde est la lista
de los "ue tienen derec1o a t%tulo@
Vamos a verO para tener derec1o a t%tulo deben cumplirse dos re"uisitos: 1aber aprobado el
curso y 1aber pagado la matr%cula
L
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
!llo nos obliga a 1acer una consulta "ue combine dos tipos de ob'etos: una tabla y una
consulta
-a tabla ser (+atriculas, y la consulta ser una "ue estar
basada en C+edias&otas ?)or "u0 no nos sirve
C+edias&otas@ )or"ue en esta consulta no 1emos incluido
el campo "ue identifica ine"u%vocamente al alumno, "ue es
su n;mero identificativo +anos a la obra:
,7 Copiamos la consulta C+edias&otas y la guardamos
como C+edias
67 Con C+edias en vista dise8o, simplemente a8adimos el campo >*dAlA de la tabla (Alumnos
Suardamos la consulta
97 Creamos una nueva consulta y la llamamos C(itulos !n ella a8adimos las (ablas
(+atriculas, (Cursos y C+edias
I7 Vamos a relacionar las tablas /e la consulta C+edias arrastramos el campo >*dAlA sobre el
campo >*dAlumnoA de (+atriculas, y arratramos >*dcursoA de (+atriculas sobre el campo
>*dCurA de la tabla (Cursos
L7 Arrastramos al grid de la consulta los siguientes campos $por este orden#:
/e (Cursos: >nomCursoA
/e C+edias: >&ombreA 2 >ApellidosA 2 >+ediaA
/e (+atriculas: >+atriculaA
M7 Vamos a ordenar por curso )ara ello, en el campo >nomCursoA, le ponemos ordenacin
A5C!&/!&(!
N7 Vamos a evaluar el primer criterio para tener derec1o a t%tulo: 1aber sacado un cinco o
ms )ara ello, nos situamos en >+ediaA y en Criterios: le aplicamos el siguiente filtro:
TUL
V7 4 a1ora evaluamos el siguiente criterio: 1aber pagado la matr%cula &os situamos en el
campo >+atriculaA y en la l%nea de criterios le aplicamos el siguiente filtro:
TW
4 ya tenemos nuestra lista de alumnos con derec1o a t%tulo
Un poquito ms difcil
!l director me 1a pedido cmo vamos con las previsiones econmicas, y le 1e dic1o "ue bien
)or"ue, ?vamos bien, verdad@
?:s atrev0is a sacarlo vosotros mismos sin leer la e=plicacin@ BXnimoC
)or si acaso alguien se traba os e=plico cmo 1acerlo
,7 Creamos una consulta en vista dise8o y la llamamos C/esviacionesW, !n esa consulta
a8adimos la tabla (+atriculas
67 Arrastramos al grid de la consulta los campos >*dCursoA y >+atriculaA
97 Convertimos esa consulta en una consulta de totales, de manera "ue nos sume todas las
matr%culas por curso )ara ello, pulsamos el botn de sumatorio $Y# Veremos "ue nos aparece
M
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
una l%nea nueva en el grid de la consulta, "ue es (otal: Como lo "ue "ueremos es "ue nos
sume los importes de las matr%culas, en el campo >+atriculaA seleccionamos la opcin $Agrupar
por# 5uma
I7 Creamos otra consulta y la llamamos C/esviaciones !n
ella a8adimos la tabla ()revision*ngresos y la consulta
C/esviacionesW, )odremos ver "ue a1ora el campo
>+atriculaA, al 1aber 1ec1o una consulta de totales, se nos
1a convertido en el campo >5uma/e+atriculaA
L7 Jelacionamos las tablas /e la tabla ()revision*ngresos
co'emos el campo >*dCursoA y lo arrastramos sobre el
campo >*dCursoA de C/esviacionesW,
M7 Arrastramos al grid de la consulta los siguientes campos:
/e ()revision*ngresos: >*dCursoA 2 >)revisionA
/e C/esviacionesW,: >5uma/e+atriculaA
N7 Vamos a a8adir un campo calculado &os vamos a una columna vac%a y escribimos lo
siguiente:
/esviacin: >5uma/e+atriculaA7>)revisionA
V7 Vamos a complicar un poco ms la consulta A8adimos un campo calculado en la siguiente
columna para sacar el porcenta'e !scribimos pues lo siguiente:
Z/esv: >/esviacinA2>)revisionA
4, como el formato "ue nos sale $si e'ecutamos la consulta# no es el idneo, sacamos las
propiedades de ese campo >Z/esvA y en <ormato le indicamos "ue "ueremos )orcenta'e
CONSULTAS DE TABLAS DE REFERENCIAS CRUZADAS
-o primero "ue se debe tener en cuenta al realizar una consulta de tablas de referencias
cruzadas es tener bien claro "u0 "ueremos "ue constituya la cabecera de filas y la cabecera de
columnas Pna vez visualizado mentalmente el resultado "ue se "uiere conseguir podremos
realizar la consulta
Vamos a obtener una lista de alumnos $"ue sern las filas de nuestra consulta# seg;n el curso
en el "ue estn "ue ser la cabecera de columna, y como datos tendremos las medias del
curso
Vamos all:
,7 Creamos una consulta en vista dise8o y a8adimos las tablas (Cursos, (+atriculas y
C+edias Suardamos la consulta como C&otasJefCruz
67 Jelacionamos las tablas As%, de (Cursos arrastramos el campo >*dCursoA sobre el campo
>*dCursoA de la tabla (+atriculas, y arrastramos de esta el campo >*dAlumnoA sobre el campo
>*dAlA de C+edias
97 A8adimos los campos siguientes al grid de la consulta:
/e C+edias: >ApellidosA 2 >&ombreA 2 >+ediaA
/e (Cursos: >&omCursoA
N
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2
I7 Convertimos la consulta en una consulta de tablas de referencias cruzadas, a trav0s del
botn correspondiente $a partir de Access 6WWN el botn se denomina Seneral# Veremos "ue
a1ora nos aparecen dos l%neas ms en el grid: (otal: y (ab ref cruz:
L7 &os situamos sobre el campo >ApellidosA y en la l%nea
(ab ref cruz le decimos "ue este campo es !ncabezado de
fila Hacemos lo mismo con el campo >&ombreA
M7 &os situamos sobre el campo >&omCursoA y le decimos
"ue es !ncabezado de columna
N7 &os situamos sobre el campo >+ediaA y le decimos "ue
este campo ser el Valor
V7 Como debemos realizar como m%nimo una agrupacin en este tipo de consultas, nos
situamos sobre el campo >+ediaA y lo agrupamos por 5uma $como tenemos una sola media
para cada alumno slo tomar un solo valor, "ue ser la propia media#
Aprovec1amos tambi0n para sacar las propiedades de >+ediaA y configuramos su formato
como fi'o, con 6 decimales
4 si a1ora e'ecutamos la consulta podremos ver los resultados
V
Vis%tame en 1ttp:22siliconpro'ectcomar2nec33ito2

Centres d'intérêt liés