Professional Documents
Culture Documents
ndice de contenido
LAS CONSULTAS...............................................................................................................................2
PREPARACIN INICIAL DE LOS DATOS..................................................................................2
NUESTRA PRIMERA CONSULTA SENCILLA UTILIZANDO EL ASISTENTE......................3
NUESTRA PRIMERA CONSULTA "ARTESANAL"...................................................................5
CONSULTA DE REFERENCIAS CRUZADAS............................................................................6
CONSULTA REALIZANDO CLCULOS....................................................................................8
CONSULTAS SOBRE CONSULTAS Y AGRUPAMIENTOS.....................................................10
UN INCISO: TIPOS DE CONSULTAS........................................................................................12
CONSULTAS CON FILTRO POR FECHAS...............................................................................13
COMBINACIN DE CONSULTAS CON DATOS EN FORMULARIO....................................15
PARA ACABAR............................................................................................................................18
La BD que se ha desarrollado siguiendo los ejemplos de este captulo la podis encontrar aqu
Vistame en http://siliconproject.com.ar/neckkito/
LAS CONSULTAS
Recordaris que en el captulo 2 habamos creado relaciones
entre las tablas. Mediante las consultas podemos sacar la
informacin que queramos no slo de una tabla sino
tambin de varias, utilizarlas a modo de filtro, utilizarlas
para eliminar datos de tablas, para actualizarlos, para crear
nuevas tablas, etc.
Adems esa informacin proveniente de las consultas puede ser
visualizada, adems de en la propia consulta, a travs de un
informe, o de un formulario en vista grfico dinmico, por ejemplo,
etc.
PREPARACIN INICIAL DE LOS DATOS
Para poder percibir "los efectos" de las consultas no tendremos ms remedio que dedicar un
poco de tiempo a introducir datos en nuestras tablas. La TFamiliaProductos ya contiene datos
(si habis hecho el ejercicio de importacin de datos desde Excel en el segundo captulo).
Vamos a introducir unos pocos registros en el resto de tablas. Iremos por partes:
Vistame en http://siliconproject.com.ar/neckkito/
(1)
En la ventana que nos aparece, elegimos la opcin "Asistente para consultas sencillas" (2) y
pulsamos el botn "Aceptar"
En
la
siguiente
ventana,
elegimos
TFamiliaProductos y pasamos el nico campo
existente a la ventana de la derecha (3A). A
continuacin, volvemos a elegir la tabla
TProductos y pasamos slo los campos "RefProd"
(2)
y
"NomProd"
(4A).
Pulsamos
el
botn
"Siguiente..."
En la nueva ventana que aparece dejamos la
opcin marcada por defecto ("Detalle...") (5A).
No utilizaremos la opcin "Resumen" porque, en
este caso, no tenemos valores numricos.
Pulsamos el botn "Siguiente..."
Le asignamos como nombre CListaProductos y dejamos marcada la opcin por defecto ("Abrir
la consulta para ver la informacin") (6A). Pulsamos el botn "Finalizar". Deberamos obtener
un resultado como el que se muestra al final de las ilustraciones (7).
Vistame en http://siliconproject.com.ar/neckkito/
(3A)
(4A)
(5A)
(6A)
(7)
Vistame en http://siliconproject.com.ar/neckkito/
Como habis podido comprobar, crear una consulta sencilla es realmente sencillo (je, je). No
tiene mucho secreto.
NUESTRA PRIMERA CONSULTA "ARTESANAL"
Vamos a ver cmo podemos construir una consulta desde
cero, lo cual nos permitir ir explorando los elementos y
caractersticas de una consulta.
Haremos una consulta muy sencilla sobre las ventas para
poder ver si hemos realizado alguna anotacin en el
momento de la venta. Despus la complicaremos un poco
aadiendo filtros de fecha que interacten con el usuario.
Para empezar vamos a /menu/Crear y pulsamos el botn "Diseo de Consulta".
En la ventana que nos aparece vamos a elegir la TVentas (seleccionamos y "Agregar").
Tambin seleccionaremos la tabla TClientes (seleccionamos y "Agregar") porque si no veramos
los comentarios sobre un DNI, y nos interesa saber el nombre del cliente. Podemos comprobar
que automticamente se nos muestra la relacin entre ambas tablas (1).
Cerramos
la
ventana
"Mostrar tabla" y, para poder
trabajar
mejor,
maximizamos la consulta.
Vemos que la ventana de la
consulta est "dividida" en
dos partes: la parte superior,
donde podemos ver las
(1)
tablas
(o
consultas)
implicadas en el proceso
(3i), y la parte inferior, donde vamos a colocar los campos de los cuales queremos extraer los
datos, y las diversas opciones para operar sobre ellos (3ii). A esta parte se la denomina
cuadrcula QBE (aunque yo la llamo grid para abreviar ;) )
La consulta nos va a dar informacin del DNI del
cliente, de su nombre, y de si hemos realizado
alguna anotacin en la venta. Vamos pues a
situarnos sobre el campo DNI, en TClientes, y
arrastramos el campo hasta la primera columna de
abajo (4).
Debera quedarnos como se indica en la ilustracin
siguiente, donde se ven ya todos los campos
arrastrados (5A).
Ahora hacemos lo mismo con el campo NomCli, y lo
situamos en la segunda columna.
Finalmente arrastramos el campo Obs de TVentas a
la tercera columna.
Vistame en http://siliconproject.com.ar/neckkito/
(3i)
(4)
(3ii)
(6)
(7)
(5A)
nuestra consulta.
Nos situamos sobre la fila criterios (7), en la columna Obs, y le decimos que el valor del
campo sea distinto de NULL. Para ello escribimos lo siguiente: "<>Null" (sin las comillas). Si,
una vez escrito, hacemos click en otro lugar de la tabla Access automticamente nos escribe
algo parecido a "Es No Nulo".
Ahora, si ejecutamos la consulta, veremos que la informacin que se nos muestra corresponde
slo a ventas con comentario.
Sensu contrario, si quisiramos slo los registros vacos escribiramos, sin comillas: "=Null".
Guardamos la consulta con el nombre "CComentarios".
Un par de observaciones ms:
Utilizando la fila "Orden" de la consulta (que est sobre la de "Criterios") podramos
ordenar la informacin de mayor (arriba) a menor (abajo).
La casilla mostrar, si est activada, lgicamente muestra la informacin correspondiente
a ese campo. Si, por ejemplo, en nuestra consulta quisiramos saber nicamente DNI y
nombre del cliente, pero no ver el comentario, simplemente deseleccionaramos la
casilla del campo Obs (que seguira hacindonos de filtro).
Podemos realizar criterios compuestos, gracias a las lneas que hay bajo la fila
"Criterios".
Podemos saber de qu tabla hemos escogido el campo gracias a la informacin que nos
da la fila "Tabla".
Si construimos una consulta compleja os aconsejo ir ejecutando la consulta cada vez
que aadamos algn campo que pudiramos considerar "conflictivo". Es frustrante, al
acabar la consulta y no haber hecho estas comprobaciones, ver que no proporciona la
informacin deseada, y tener que deshacer lo andado para detectar dnde est el error.
Enhorabuena! Ya tenemos nuestra primera consulta "artesanal".
CONSULTA DE REFERENCIAS CRUZADAS
Imaginemos que nuestro amigo distribuidor quiere obtener informacin de cuntas unidades
6
Vistame en http://siliconproject.com.ar/neckkito/
se han vendido por familia de productos, y, al mismo tiempo, saber qu productos se han
vendido y cuntas unidades de cada uno de ellos han salido en la venta (a que parece
complicado?).
Para ello vamos a realizar una consulta de referencias
cruzadas.
Antes de poder realizar este tipo de consulta debemos
realizar, prviamente, una consulta auxiliar que recoja los
datos que intervendrn en la consulta de referencias
cruzadas. En este caso, la informacin que queremos
depende de los siguientes elementos:
Familia de productos
Producto
Unidades vendidas.
Como ya somos unos "cracks" haciendo consultas realizamos una consulta, a la que
llamaremos "CUnidadesxFamiliaxProducto". El diseo de la tabla se muestra a continuacin:
(2)
(1)
Vistame en http://siliconproject.com.ar/neckkito/
Como ttulo de fila vamos a elegir el campo FamProd. Lo pasamos a la ventana de la derecha
(3). Pulsamos "Siguiente".
(3)
En la nueva ventana elegimos como ttulo de columna el campo NomProd. Pulsamos el botn
"Siguiente".
En la siguiente ventana, como nos interesa saber el total de unidades vendidas, marcamos que
queremos el agrupamiento de Ud_Vta por Suma (4). Pulsamos el botn "Siguiente".
En la ltima pantalla le dejamos los
valores por defecto, porque queremos ver
el resultado de la consulta. Pulsamos el
botn "Finalizar".
El resultado debera ser parecido al que
se muestra en la ilustracin de la pgina
siguiente.
Por
ejemplo,
ahora
el
distribuidor sabe que ha vendido 7
unidades de la familia Carnes, y que
estas ventas estn compuestas por 5
unidades de Filete y por 2 unidades de
Pollo.
(4)
Vistame en http://siliconproject.com.ar/neckkito/
Producto
Precio venta producto
Unidades vendidas
Creamos una consulta en vista diseo y la guardamos con
el nombre de "CCobrosTotalesVentas". La estructura inicial
de la consulta es la que se muestra a continuacin:
Vistame en http://siliconproject.com.ar/neckkito/
Ahora slo nos queda calcular el total cobrado, que lgicamente ser "BaseImponible + IVA".
Lo escribimos as:
Si, para asegurarnos, volvemos a ejecutar la consulta,
veremos que Access nos ha realizado los clculos
necesarios y que se muestran en la ilustracin siguiente:
Vamos a solucionar nuestro "problemilla" con el formato del IVA. En vista diseo de la consulta
nos situamos sobre la diminuta zona gris que hay sobre el nombre del campo IVA (el cursor
debe cambiar a una flecha indicando hacia abajo) y, en
este punto, pulsamos con el botn derecho del ratn
para sacar el men contextual y elegimos la opcin
"Propiedades..." (1). Podramos hacer lo mismo
haciendo click con el botn izquierdo (la columna
debera quedar seleccionada en negro), y a continuacin
pulsar sobre el botn "Hoja de propiedades" (2).
(2)
(1)
En
la
hoja
de
propiedades
que
aparece
le
establecemos
en
formato en "Euro", y
la propiedad "Lugares
decimales"
la
establecemos en 2
(3).
Si ahora volvemos a
ejecutar la consulta veremos que el IVA ya tiene el formato
que queramos.
(3)
10
Vistame en http://siliconproject.com.ar/neckkito/
(1)
(2)
(3)
(4)
(5)
11
Vistame en http://siliconproject.com.ar/neckkito/
nos muestra varias filas de la misma familia de productos, y, evidentemente, no era ese el
resultado que esperbamos. Nos falta decirle a Access que queremos un agrupamiento por
suma, en nuestro caso. Para ello, en vista diseo, pulsamos sobre el botn del sumatorio (4).
Veremos que aparece
una fila sobre la fila "Orden" que se denomina "Total" (5).
Como lo que queremos es la suma de los totales elegimos
del desplegable del campo Total la opcin "Suma" (1).
Como vemos, aqu podramos elegir otros tipos de
agrupamiento
matemtico,
como
mximo,
mnimo,
promedio, etc., as como tambin permite un agrupamiento
por expresin, elegir el primero o el ltimo, etc.
(1)
(2)
(5)
(4)
(3)
12
Vistame en http://siliconproject.com.ar/neckkito/
tipo de consulta que queremos que sea. Para ello utilizaremos los botones correspondientes,
tal y como muestra la ilustracin siguiente:
Vamos a ver un ejemplo terico: imaginemos que tenemos dos tablas exactamente iguales
(por ejemplo, una recoge los datos de ventas que introduce el comercial A y otra recoge los
datos de ventas que introduce el comercial B). Necesitamos dos por los motivos que sean y no
queremos que se reflejen en una sola tabla. Ahora, como administradores, queremos sacar
unos informes de ventas conjuntas. Para poder analizar toda esta informacin sin ir tabla por
tabla podramos hacer lo siguiente:
Crear una consulta con todos los datos de la tabla A y convertirla en una consulta de
creacin de tabla TOTALES. Cuando ejecutsemos esta consulta la tabla A y la tabla
TOTALES tendramos exactamente los mismos datos en ambas. Ya tenemos una
consulta de creacin de tabla.
Crear otra consulta con todos los datos de la tabla B, pero esta vez anexarla a los datos
de la tabla TOTALES. De esta manera, la tabla TOTALES tendra ahora los datos de A
ms los datos de B. Ya tenemos una consulta de datos anexados.
Ahora ya podramos operar sobre la tabla TOTALES, con toda la informacin de ventas.
Un ejemplo terico de actualizacin podra ser realizar una consulta que coja todos los datos
de la tabla A y, donde pone, por ejemplo, "Ventas sector 3", ponga ahora "Ventas sector 4". Al
ejecutar la consulta los datos de la tabla A se actualizaran de "Ventas sector 3" a "Ventas
sector 4".
Por ltimo, y referente a una consulta de eliminacin, imaginemos que nuestro amigo
distribuidor est contabilizando ventas de productos y, porque se elimina la venta en el ltimo
momento o porque se despista, empieza a rellenar los datos de la venta pero no rellena todos
los campos. Si mirsemos la tabla veramos registros que estn parcialmente en blanco.
Supongamos que el elemento que siempre queda sin completar es el nmero de unidades
vendidas. Podramos pues realizar una consulta buscando todos los registros en los que el
campo Ud_Vta es 0. Si la convertimos en una consulta de eliminacin cada vez que
ejecutsemos esa consulta se eliminaran todos los registros que tuvieran cero como nmero
de unidades.
CONSULTAS CON FILTRO POR FECHAS
Ya que filtrar por fechas suele ser muy habitual explicar cmo establecer diferentes filtros de
fecha en una consulta.
13
Vistame en http://siliconproject.com.ar/neckkito/
(1)
(2)
(3)
(1)
slo
que
que
sin
(2)
14
Vistame en http://siliconproject.com.ar/neckkito/
de dilogo donde se solicita al usuario que introduzca una fecha con el formato que le
indicamos. Si no lo hacemos as saldr un mensaje de error.
Para el resto de consultas (inferior o entre fechas) basta
sustituir la fecha que hemos practicado en CFiltroFechas1
por esta nueva estructura aprendida ahora ["pregunta"].
Podramos emplear esta estructura en el campo Prod_Vta,
escribiendo un criterio como ["Nombre del producto?"],
por ejemplo, pero corremos un pequeo peligro: si no
escribimos el nombre del producto exactamente igual a
como est introducido en la base de datos o bien
obtendremos un error o bien obtendremos una consulta sin
informacin que mostrar.
Una manera "elegante" de solventar el problema anterior se explica en el epgrafe
siguiente.
COMBINACIN DE CONSULTAS CON DATOS EN FORMULARIO
Para explicar este epgrafe vamos a necesitar un formulario. Para ello creamos un formulario
en vista diseo y lo llamamos FFiltroProducto.
Vamos a crear un cuadro combinado en el formulario en blanco. Para ello pulsamos sobre el
botn "cuadro combinado" en el grupo "Controles" (3A). Si ahora situamos el cursor sobre el
formulario veremos que se ha convertido en una cruz con un icono junto a ella en forma de
cuadro combinado. Con el botn izquierdo del ratn dibujamos la figura de un cuadro
combinado (un pequeo rectngulo) (4).
Al soltar el botn izquierdo
nos aparecer el asistente (si
tenemos
activada
esta
opcin) y nos dar dos
opciones.
Elegiremos
la
opcin de buscar en una tabla
o consulta existentes (5).
Pulsamos
el
botn
"Siguiente".
(3A)
(5)
(4)
15
Vistame en http://siliconproject.com.ar/neckkito/
(6)
(8)
(7)
Ahora debemos asignar un nombre al cuadro combinado para poder reconocerlo cuando
diseemos la consulta. Hay que tener en cuenta que, en general, cuando creamos un control
siempre trae aparejado una etiqueta del control. Es importante no confundir la etiqueta con el
control.
(9A)
Es
costumbre poner tres letras antes del nombre, las
cuales indican el tipo de control al que se est
haciendo referencia. Como es un cuadro
combinado (combo box) ponemos cbb. Si el
control fuera un cuadro de texto pondramos
txtNombre, si fuera una etiqueta (label)
pondramos lblNombre, etc.
(10)
16
Vistame en http://siliconproject.com.ar/neckkito/
Ahora, sin cerrar nuestro formulario, creamos una nueva consulta en vista diseo. La
llamaremos CFiltroProducto.
Aadimos TVentas y TProductos y arrastramos el
asterisco a la primera columna. Arrastramos tambin el
campo NomProd de TProductos (11).
Vamos a decirle a la consulta que queremos que filtre
(12B)
17
Vistame en http://siliconproject.com.ar/neckkito/
Consultas (I)
Consultas (II)
18
Vistame en http://siliconproject.com.ar/neckkito/