Вы находитесь на странице: 1из 28

CONSULTAS AVANZADAS

En realidad, los datos existen para poder consultarlos; optimizar esa tarea es el objetivo del presente captulo. Por eso, no hay que dejar de leer cmo obtener totales, actualizar datos, eliminarlos, etc.; todo en base a criterios y a distintos parmetros. Consultas avanzadas 4 Hacer clculos dentro de las Consultas Clculos ms complejos . . . . . . . . . . . . Liquidacin de sueldos . . . . . . . . . . . . Consultas de parmetros . . . . . . . . . . . Operaciones con fechas . . . . . . . . . . . . El generador de expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 .106 .109 .118 .120 .126

Captulo

Hacer clculos dentro de las Consultas

Hacer clculos dentro de las Consultas


Agrupar como primera medida
Si deseamos obtener el total de clientes que tenemos por localidad, la cantidad de compras que han hecho o la suma total de ventas de cada vendedor, primero debemos agruparlos. Tal como se mencion en el captulo anterior, la idea de agrupar es no mostrar los valores que estn repetidos dentro de un mismo campo. Pero el hecho de que Access no los muestre no significa que no cuente cuntas veces apareca ese mismo valor. En principio, agrupar por s solo no tiene mucho sentido, pero s se tornar realmente prctico cuando se agregue algn campo que calcule cuntas veces aparecan las mismas localidades o el mismo vendedor. Para lograrlo, en primer lugar se debe crear una consulta comn y corriente, donde las tablas a incluir dependern de lo que se desee obtener como resultado. Por ejemplo, si queremos saber cuntos clientes tenemos en cada localidad, deberemos agregar nicamente esta tabla al diseo. En cambio, si lo que deseamos conocer es cuntas veces ha venido a comprar cada uno de los clientes, necesitaremos agregar dos (Clientes y Ventas), aunque despus solamente se utilice un campo (Nombre y Apellido). Llevando a la prctica el primer caso, una vez pasado a la cuadrcula el campo Localidad se debe presionar el botn Totales de la Barra de Herramientas. Al principio el resultado no ser gran cosa: slo mostrar sin repetir las diferentes localidades que hay en la tabla, pero no dir cuntos clientes tiene en cada una. Es que todava falta agregar un campo muy especial.

Figura 1. El resultado de la consulta an es pobre, pero quedar mucho mejor cuando, con un campo calculado, indique la cantidad de clientes existentes en cada localidad.
101

Consultas avanzadas

ACCESS 2000 AL MXIMO

TRUCOS

VENTAJAS ACCESS 2000


Una posibilidad interesante que surge de efectuar consultas con clculos es que los resultados se pueden pasar a Excel con el fin de generar un grfico. Si bien dentro de Access pueden crearse formularios e informes grficos, el programa ideal para ello sigue siendo Excel, que resulta ms prctico a la hora de manipularlos y darles un formato mejorado. Es simple: slo se deben seleccionar y copiar los datos al momento de ver el resultado de la consulta. Por ltimo, hay que entrar a Excel y pegarlos en cualquier parte de la planilla. El grfico se debe crear como cualquier otro dentro de ese programa; la ventaja es que ya se tendr resumida la informacin.

Los campos calculados


Un campo de este tipo es aqul que no existe en la tabla y que se crea slo temporalmente dentro de una columna en la consulta para realizar algn tipo de operacin matemtica. Por ejemplo, podra utilizarse uno para sumar lo recaudado por un vendedor, calcularle una comisin del 10 por ciento sobre ese valor o, como mencionbamos hasta ahora, contar cuntos clientes hay en cada localidad. Continuando con el diseo de la consulta anterior, se debe agregar a la cuadrcula QBE un campo al lado de Localidad, pero la diferencia es que no hay que obtenerlo de la lista que hay en la tabla de arriba, sino que se deber escribir a mano. Ante todo es preciso tipear el texto que aparecer como ttulo de la columna. Puede ser cualquier cosa, por ejemplo: Total, Cantidad de clientes por localidad, etc. Luego se deben poner dos puntos, y a continuacin el nombre del campo del cual se desean contar sus contenidos agrupados. En caso de no poner un ttulo, aparecer algo as como Cuentadelocalidad (todo junto). El campo quedara ms o menos de este modo: Total de clientes: Localidad. Access se encargar de agregar los espacios y corchetes que sean necesarios y que no pusimos (no hay que preocuparse: en este caso no tenemos la obligacin de hacerlo). Por ltimo, en la parte inferior, sobre el sector que dice Agrupar por, presionar la flecha que apunta hacia abajo y elegir Cuenta entre todas las operaciones disponibles.
102

Hacer clculos dentro de las Consultas

Figura 2. En la primera columna son agrupadas todas las localidades. En la segunda, el campo calculado cuenta cuntas veces apareca cada una de ellas dentro de la tabla..

Quizs a algunos la lgica les diga que deben utilizar la operacin Suma en vez de Contar. La cuestin aqu es que sumar se utiliza solamente con nmeros, por ejemplo, para obtener un total de ventas por cada vendedor. En cambio, contar tambin puede utilizarse con palabras, para saber cuntas veces aparecen. No se podran sumar las localidades, como tampoco los nombres de los empleados (para dar un ejemplo); hay que contarlos, que para Access no es lo mismo.

Figura 3. Los resultados pueden servir para ser visualizados aqu, servir de base a otras operaciones, o copiar y pegarse dentro de Word o Excel.
103

Consultas avanzadas

ACCESS 2000 AL MXIMO

MS DATOS

TTULOS ACCESS 2000


As como para las tablas existe la propiedad ttulo, para las consultas tambin; la forma ms prctica de colocarlo es delante de cada nombre de campo, seguido de dos puntos. Se le puede poner ttulo a cualquier campo, sin necesidad de que sea uno calculado. El nico detalle a tener en cuenta (para ahorrarse problemas) es que ese texto no debe coincidir con el nombre de ningn campo existente en la base.

Un ejemplo ms
Para obtener el total recaudado por cada vendedor, primero se deben agregar dos tablas a la consulta: Ventas y Vendedores. Como segundo paso, hay que insertar los campos Nombre de Vendedor y Monto (cada uno est en una tabla diferente). Aqu no es necesario inventar ningn campo calculado (como en el caso anterior), porque en una de las columnas que se utilizarn para hacer la suma ya existe uno: es justamente el de Monto. Por eso, lo nico que restara por hacer es elegir, debajo de ese campo, la operacin Suma en vez de la de Agrupar por (si se eligiera Cuenta se obtendra el total en cantidad de ventas). En el resultado de la consulta, el ttulo de la segunda columna ser SumadeMonto. Para colocar otro, escribir el texto deseado delante del nombre del campo, seguido de dos puntos. Ej.: Total de ventas: Monto.

Figura 4. As es como se debe disear esta consulta.

104

Hacer clculos dentro de las Consultas

HAY QUE SABERLO

QU CAMPOS INCLUIR EN LA CUADRCULA QBE: ACCESS 2000


Si se desea saber cuntos clientes hay en cada localidad, se debe ser el nico campo a utilizar en la consulta de totales. La cuestin es simple: al agrupar desaparecern todos los que sean iguales (repetidos). Pero si se insertara el campo Nombre y Apellido, cada uno pasara a ser distinto (aunque vivan en la misma localidad), y en ese caso no habr ninguno repetido para poder agrupar. Por tal motivo, slo hay que colocar el campo del que se sabe que hay repetidos, pero no aquellos que son nicos dentro de la tabla.

Figura 6. As es como se ven las listas de consultas para practicar creadas hasta ahora. Llegar un momento en que haya decenas, por lo que seguramente empezaremos a ocultar las que menos nos interesen. Ya veremos este tema ms adelante.

105

Consultas avanzadas

Figura 5. De cada venta que haya realizado un vendedor se van sumando y acumulando sus montos.

ACCESS 2000 AL MXIMO

Clculos ms complejos
Supongamos que necesitamos liquidar las comisiones a los vendedores Junior. A cada uno le corresponder, sobre el total de ventas que hayan realizado, lo que indique el campo Comisin de la tabla Vendedores (en el captulo 3 hemos visto la manera de agregarlo y de definir el tipo como Numrico y con el formato Doble). Antes que nada, creamos una nueva consulta incluyendo los siguientes campos: Nombre de Vendedor, Categora y Monto. Hasta aqu es parecido al ejemplo anterior; la nica diferencia est en que ha sido agregado el campo Categora. Vale tener en cuenta que, aunque se estn haciendo clculos, esto no deja de ser una consulta a la que es posible agregarle los criterios que se deseen. Por eso, para obtener las liquidaciones de los vendedores Junior solamente, se deber agregar esa palabra como criterio del campo. El monto tambin debe sumarse, cosa que no difiere del otro ejemplo (y no hay que olvidar ponerle un ttulo si se quiere ver ms prolijo el resultado). En realidad, la particularidad reside en la cuenta a realizar para obtener el porcentaje que le correspondan a esos vendedores. Para ello habr que ubicarse en la columna siguiente al campo Monto y all escribir: Total comisiones: Monto*Comisin, donde la frase Total comisiones puede ser reemplazada por cualquier otra (menos Comisin a secas, que es el nombre del campo en s).

Figura 7. Las comisiones, al igual que los montos, se deben sumar; de lo contrario aparecer cada una por separado y se perder el concepto de agrupamiento. Un detalle; la frase total vendido se utiliza como ttulo de la tercera columna.

106

Clculos ms complejos

Figura 8. Calcular a mano el resultado sera una tarea sumamente tediosa. Incluso es posible desmarcar la opcin Mostrar en el campo Categora; total, ya sabemos que los vendedores que aparecen son los de esa categora. 4
MS DATOS

CORCHETES ACCESS 2000


Si el nombre del campo utilizado para realizar la operacin contiene espacios en blanco y ms de una palabra (ej.: Monto de la operacin), conviene encerrarlo entre corchetes manualmente, y no dejar que Access lo haga, pues seguramente lo har mal y pondr los corchetes donde no correspondan.

Una cambio automtico en el diseo


Al guardar y cerrar la tabla, Access har un pequeo retoque a los clculos de la consulta anterior, que recin se notarn al volver a abrir el diseo de la misma. La Figura 9 muestra cmo queda despus de los cambios aplicados por Access, aunque no hay que preocuparse por ellos. En realidad, sa es la forma correcta de cmo debera haberse diseado el clculo, pero el programa lo entiende de todas formas. El tema es que a veces resulta ms fcil disear la consulta como hemos venido haciendo hasta ahora y dejar que Access se encargue de los detalles tcnicos.

Figura 9. Obsrvese que, en la ltima columna, ahora la operacin es Expresin, y en la parte superior se ha agregado la frmula Suma delante de los dos campos.

107

Consultas avanzadas

ACCESS 2000 AL MXIMO

Formatos y otras cuestiones


Aplicar formatos a los campos
Como se habr notado en la Figura 8, los valores de la columna Total comisiones no tienen formato alguno. En realidad, sera ideal agregarles el signo pesos adelante (formato moneda). Para esto slo hay que hacer un clic derecho en cualquier parte de esa columna, y all seleccionar la opcin Propiedades. En seguida aparecer una ventana donde se deber especificar el formato adecuado.

Figura 10. Una vez seleccionado el formato deseado, cerrar esta ventana.

Mostrar dos campos en la misma columna


Es posible mostrar juntos a dos campos dentro de una misma columna. Para entenderlo mejor, partiremos de un ejemplo bastante comn en el que el nombre y el apellido han sido ingresados en dos campos distintos, y por lo tanto se ven en dos columnas separadas. Para ver juntos ambos campos deberamos crear una consulta y all unirlos. Para ello nos alejaremos un poco de la base de datos con la cual hemos estamos trabajando hasta ahora y tomaremos una tabla con estas caractersticas. Para unir los campos hay que ingresar ambos en la misma columna de la cuadrcula QBE, unidos por el signo +. El tema es que al visualizar los resultados, el apellido y el nombre aparecern pegados. Para separarlos, nada mejor que una coma y un espacio entre medio. En la Figura 11 puede apreciarse un ejemplo.
108

Liquidacin de sueldos

Figura 11. Lo que se est generando aqu es una expresin que mostrar ambos campos dentro de una misma columna. La coma debe ir entre comillas.

Figura 12. Convendra cambiar el ttulo Expr1 por uno ms adecuado, tipo Nombre y Apellido.

Liquidacin de sueldos
En primer lugar debemos realizar un pequeo agregado a la tabla Datos personales: incluiremos en ella el campo Sueldo bsico. Luego ingresamos valores all, tal como se observa en la Figura 13.
109

Consultas avanzadas

ACCESS 2000 AL MXIMO

Figura 13. Estos sueldos sern la base para obtener el neto a cobrar despus de aplicarle todas las asignaciones y restarle las retenciones correspondientes.

Listo; ya estamos preparados para crear un grupo de consultas que ayudarn a liquidar los sueldos de cada empleado. Hay que tener en cuenta que al sueldo bsico deberemos sumarle las comisiones, las asignaciones por esposa e hijos y la antigedad, y a todo eso restarle lo que nos corresponda pagar como empleadores a la obra social del empleado. No va a ser tarea fcil. Primero empezaremos haciendo las cosas ms bsicas, pero luego la consulta se ir complicando. Por qu? Porque en un principio haremos la liquidacin, pero para todas las ventas; en realidad corresponde hacerla de un perodo determinado. Adems, habr que considerar las asignaciones por esposa, pues no todos los empleados deben recibirla. Por ese motivo se debe prestar mucha atencin, pues los pasos a seguir no son tan sencillos como parecen en un principio. Y eso que an no trataremos las operaciones matemticas con fechas.

Diseo de la consulta
Empezaremos obteniendo las retenciones y asignaciones bsicas. Para tal fin, agregamos al diseo de la consulta las siguientes tablas: Vendedores, Ventas, Datos personales, Listado de antigedades y Obras sociales. Hecho esto, de la tabla Vendedores arrastramos a la cuadrcula QBE los campos Cdigo de vendedor, y Nombre y Apellido. Luego deberemos crear un par de expresiones para obtener la cantidad a percibir por cada hijo (en este caso, por cada uno corresponden $4,50) y la retencin para la obra social. En la Figura 14 se puede ver claramente cmo generar esas frmulas. Obsrvese que para las columnas se ha colocado un ttulo que siempre difiere de cualquier campo existente (con el fin de evitar problemas en referencias futuras a ellas). Para finalizar, arrastramos el campo Plus de la tabla Listado de antigedades y por ltimo presionamos el botn Totales de la Barra de Herramientas (para agrupar los valores repetidos).
110

Liquidacin de sueldos

Figura 14. Los nombres de los campos deben ir siempre encerrados entre corchetes, y conviene poner un ttulo a las columnas para evitar el texto ExprX en cada clculo que se genere.

Figura 15. As debe verse el resultado de la consulta. Todava faltan muchas cosas por agregarle.

SUGERENCIA

SIGNO $ ACCESS 2000


No estara dems aplicar el formato moneda para todas las columnas que contengan este tipo de valores.

Ahora tendramos que volver al diseo de la consulta, agregar el campo Sueldo bsico y generar una expresin que sume a este campo el valor de la asignacin por hijos, reste la obra social y sume el plus por antigedad. ste ser, en definitiva, el total neto a cobrar por la persona. Un detalle muy importante es que al terminar esta frmula, en lugar de la operacin Agrupar por debemos elegir Expresin. De lo contrario, cada vez que se ejecute la consulta aparecer un cartel como el de la Figura 18.
111

Consultas avanzadas

ACCESS 2000 AL MXIMO

Figura 16. La segunda columna y la ltima son los dos elementos nuevos de esta consulta.

Figura 17. Por el momento, stos son los resultados de los clculos.

Figura 18. Este cartel aparecer si no indicamos que Total neto es una expresin, o si dentro de la frmula hacemos referencia a un campo o expresin que no existe en la consulta.

MS DATOS

SE PUEDEN OCULTAR ALGUNOS ACCESS 2000 CAMPOS?


No; no podemos ocultarlos quitando el tilde del botn Mostrar: lamentablemente deben estar presentes en la cuadrcula QBE porque son utilizados en sumas posteriores. De lo contrario, tambin aparecer un cartel como el de la Figura 18. Podramos evitar mostrar ciertos campos si generramos una nueva consulta a partir de la existente, donde es posible colocar los que deseamos para visualizarlos, aunque, como se advertir, esto toma un poquito ms de trabajo extra.

112

Liquidacin de sueldos

La funcin condicional (SiInm)


Para obtener la asignacin por esposa hay que insertar una frmula que acte en base a una condicin. Por qu? Simplemente porque no todos deben recibir este tipo de asignacin, sino que en principio lo harn los empleados casados. La funcin S inmediato (SiInm) es la que se encargar de este tema. En ella hay que definir una condicin y dos acciones: una, a realizar si la condicin es verdadera; la otra, si es falsa. Es simple: si llueve (condicin) abro el paraguas (accin verdadera); si no, no lo abro (accin falsa). Ntese que no es necesario volver a preguntar Y si no llueve?, porque esto ltimo se da por descarte. Por eso, basta con poner una nica condicin. La condicin se separa de las acciones por una coma o un punto y coma (segn cmo est definida la configuracin regional de Windows en nuestra PC). Quedara as: SiInm(condicin, accin verdadera, accin falsa) En nuestro ejemplo de liquidacin de sueldos, la condicin ser si el empleado es casado. Si es as le daremos $20 como asignacin; si no, nada ($0). Traducido: Esposa: SiInm([casado]=verdadero,20,0) La palabra Esposa es el ttulo de la expresin, y estamos comprobando si el campo casado es Verdadero porque se trata de un campo definido como tipo SI/NO-Verdadero/Falso. En realidad, la comparacin en la condicin podra ser con cualquier cosa: ver si hay un valor superior a cierto monto, si es igual a una fecha, si es mayor al resultado de una frmula realizada en una expresin, si es igual a una palabra, etc. El ejemplo debera quedar como en la Figura 19. Hay que considerar que a partir de aqu empezaremos a mostrar por partes el diseo de la consulta, debido a su extensin.

Figura 19. No hay que confundirse: la accin falsa no aparece aqu porque su resultado es cero; es lo mismo que no existiera (es nula). Se puede escribir o no.
113

Consultas avanzadas

ACCESS 2000 AL MXIMO

Figura 20. El resultado: ahora slo falta sumarlo al total neto y mejorar un poco la condicin (pronto veremos el porqu).

Un resultado nulo
Hasta aqu, todo parece estar saliendo de maravillas. Pero slo en apariencia. El primer problema que surgir radica en lo siguiente: al incluir la asignacin por esposa en el total neto, ese valor quedar en blanco para los individuos que no estn casados. Difcil de creer? Observemos las Figuras 21 y 22.

Figura 21. Las frmulas.

Figura 22. Los resultados. Juan Prez tiene la desgracia de no cobrar sueldo por no haberse casado.

A ver si nos cierran las cuentas para Prez: 500+0-25+20+0 debera dar $495. Y por qu aparece en blanco el sueldo neto? Porque el resultado de la funcin condicional, en caso de que el individuo no fuera casado, era un valor Nulo, que para Access no tiene nada que ver con un cero (por ms que nos matemos escribiendo un cero como resultado para alguna de las acciones de la condicin). Incluir en una suma un valor nulo sera casi lo mismo que dividir por 0. El resultado es nada. Hay solucin? Por supuesto que la hay, y viene de la mano de una frmula: NZ(). Esta frmula tiene la particularidad de transformar un valor Nulo en un cero, por lo que los resultados de cualquier frmula que se haga sern correctos. Observemos las Figuras 23 y 24 y veremos cmo armarla.
114

Liquidacin de sueldos

Figura 23. En la ltima columna, la expresin esposa ha sido colocada dentro de la frmula NZ. Recordemos que aqu estamos viendo parte del diseo, y no todo.

Figura 24. Ahora si; las cosas como deben ser. O todava falta ms?

Una condicin dentro de otra


Por supuesto que falta ms, y esto conviene leerlo bien despierto; si no, es posible llegar a marearse. Si analizamos detenidamente todo lo que hemos hecho hasta ahora, la asignacin por esposa no est bien otorgada. Por qu? Porque tambin la est recibiendo una mujer. Podrn existir asignaciones por esposo, pero no es el caso de esta empresa machista. As que estamos en un problema. Pero todo problema, aunque complejo, tiene solucin. Y aqu, adems del estado civil hay que verificar el sexo de la persona: si es casada, debe ser masculino. En ese caso se le darn $20. Si no es masculino, no recibe nada, y si no es casado, menos. Aqu, como hemos visto, si se cumple la primera condicin (casado) tambin debe verificarse otra (masculino). Nuestra frmula quedara algo as: Esposa: SiInm([casado]=verdadero,SiInm([sexo]=masculino, $20,0),0) Ntese que masculino debe ir encerrado entre comillas, porque es una palabra; eso no sera necesario si fuesen nmeros. Access transformar la frmula de la siguiente manera: Esposa: SiInm([casado]=Verdadero,SiInm([sexo]=masculino, 20),0) No hay caso; si no le saca un cero a la segunda condicin, el programa no est contento. La Figura 25 tratar de echar algo de luz sobre esta frmula.

115

Consultas avanzadas

ACCESS 2000 AL MXIMO

Figura 25. Dentro de la accin verdadera, hay otra condicin con una accin verdadera ms que le corresponde. Ahora s que la asignacin estar bien otorgada.

Liquidacin de comisiones
Ahora que ya tenemos casi todo hecho, falta lo ms importante. O es que nuestros vendedores le sonren a cada cliente por nada? Falta liquidar las comisiones. En principio es fcil: basta multiplicar los montos de ventas por la comisin respectiva a cada vendedor, y luego sumar esa cifra resultante (no agruparla). El problema es que no vamos a liquidar las comisiones desde que comenzaron a trabajar en la empresa, sino del mes de sueldo que corresponda liquidar.

Figura 26. Simple, para empezar. No olvidemos indicar que deseamos Sumar; de lo contrario el resultado ser un desastre. Igualmente, al cerrar y abrir la consulta nos encontraremos con un pequeo cambio, tal como se explic en la Figura 9.

116

Liquidacin de sueldos

Figura 27. Estos cuantiosos sueldos no deberan ser tales, pues el perodo liquidado de comisiones no es el correcto. Por su tamao, el Cdigo de vendedor ya no entra en la vista, pero nos preocupemos; sigue estando all.

Limitar la liquidacin a un perodo determinado


Existen dos maneras de limitar el rango de fechas. La primera es crear una condicin para que se efecte la suma de Monto*Comisin. Cul ser? La cuenta se efectuar si la venta est entre dos fechas especificadas.

Figura 28. As se debe limitar la suma de las condiciones a un perodo determinado. En este ejemplo, el perodo de fechas supera el de un mes porque no haba muchas ventas, pero en la prctica no debera.

Figura 29. Los resultados no son los mismos. Ahora los sueldos netos son inferiores. Al cerrar la consulta y volverla a abrir, la frmula de esta columna habr cambiado un poco, pero tendr el mismo objetivo (la palabra Suma se coloca delante de todo).

Generar consultas dentro de otras


Cabe tener en cuenta que si se desean visualizar de manera simple todos los datos utilizados para los clculos, e incluso ocultar alguna de las columnas, tranquilamente podramos crear una consulta que incluyera la anterior como nica lista de campos. El ejemplo que veremos a continuacin tiene algo de ese tipo, pe117

Consultas avanzadas

ACCESS 2000 AL MXIMO

ro con algunas variaciones: mostrar los datos personales del empleado y, al final, el sueldo neto, sin detallar cunto se le descont ni sum, sino el por qu. Las dos siguientes Figuras ilustran a qu se apunta exactamente.

Figura 30. El diseo: la primera lista de campos en realidad es la consulta recientemente creada; la otra es la ya conocida tabla Datos personales. En el resultado se podrn observar todos los campos utilizados.

Figura 31. Cost obtener el sueldo neto, pero lo logramos. Estos datos ahora pueden ser utilizados para elaborar un Informe e imprimir directamente el recibo de sueldo de cada empleado.

Consultas de parmetros
Una consulta de parmetros es aquella en la que el criterio no es escrito en el diseo, sino que se ingresa en el momento de ejecutarla. As, por ejemplo, podramos tener una consulta que cada vez que se ejecute pregunte el nombre del vendedor cuyas ventas se desean visualizar. Es muy fcil disear este tipo de consultas: slo hay que escribir la pregunta que aparecer en el momento de ejecutarse, en lugar de un criterio. Eso s; esta pregunta debe ir entre corchetes para diferenciarla de un criterio comn y corriente.

118

Consdulta de parmetros

Figura 33. Al ejecutar la consulta, primero aparecer esta pregunta, a la que deberemos responder obligatoriamente.

Figura 34. El resultado: nicamente se muestran las ventas de Prez.

Ventajas de este tipo de consultas


Imaginemos que la base la diseamos nosotros, pero el que la opera es una persona que apenas sabe dnde est el botn Inicio de Windows. No pretenderemos que, cuando haya que liquidar comisiones de un mes diferente, esta persona ingrese al complejo diseo de la consulta que hicimos hace poquito y cambie el rango de fechas. Si realmente pretendiramos eso estaramos perdidos, amigos. En ese caso, lo mejor es aprovechar los parmetros para especificar
119

Consultas avanzadas

Figura 32. La pregunta puede estar expresada de cualquier manera. El nico detalle es que no sea igual al nombre de un campo existente en la consulta.

ACCESS 2000 AL MXIMO

un rango de fechas. As, cada vez que esta persona ejecute la consulta se encontrar con dos preguntas bastante elocuentes: las fechas entre las cuales debe estar el perodo a liquidar. Veremos cmo llevar a cabo esta modificacin en el diseo de la consulta vista con anterioridad en la Figura 28.

Figura 35. Obsrvese que, en lugar de fechas, ahora hay dos preguntas encerradas entre corchetes, que servirn como parmetros a definir cada vez que se ejecute esta consulta. Recordemos que el texto de cada pregunta se puede definir a criterio propio.

HAY QUE SABERLO

LAS PREGUNTAS ACCESS 2000


Una vez que la persona responda la primera pregunta, aparecer la segunda. Siempre que haya muchos parmetros, el usuario deber responder todos para poder ver un resultado. No sirve dejarlos en blanco, porque en esos casos la consulta no dar ningn resultado.

Operaciones con fechas


Extraer partes de una fecha
Una consulta interesante que se podra crear es aquella que listara todas las ventas del da actual. Es muy simple, slo habra que colocar como criterio la frmula Fecha() en el campo Fecha de operacin. Tambin podramos considerar otra consulta que listara todas las operaciones efectuadas en el mes indicado. El nico objetivo aqu es ensear un grupo de frmulas nuevas: Mes(), Da() y Ao(). No es que sean imprescindibles, pero algn da podramos llegar a necesitarlas. Cada una obtiene de una fecha la parte que su nombre indica. Por ejemplo, si quisiramos listar todas las ventas del mes 4, tendramos que armar una consulta donde la extraccin del mes de fecha de operacin sea equivalente a dicho nmero. En realidad, lo mejor para poder ir variando los criterios es utilizar un parmetro para ingresarlo. En la Figura 36 se puede observar cmo habra que disear un
120

Operaciones con fechas

ejemplo donde, en la columna que contiene el parmetro a ingresar (criterio), no es necesario que se visualice en el resultado (el botn Mostrar est desmarcado).

Figura 36. Las ventas que aparecern sern nicamente las que tengan el nmero de mes ingresado al ejecutar la consulta.

Realizar una pequea mejora


Como generalmente no se trabaja con una base slo por un par de meses, surgir un problema cuando se la utilice durante ms de un ao: cuando se listen las ventas efectuadas durante el mes 4, saldrn las del ao 2000, 1999, 1998, 1997, etc. Es decir, las de todos los aos que existan en la tabla Ventas. Si nos interesa trabajar con las ventas del ao actual, la ayuda viene de la mano de una frmula ya conocida: Fecha(). Obsrvese en la Figura 37 cmo se debera hacer.

Figura 37. Ahora slo se vern las ventas del mes indicado (debemos ingresarlo como un parmetro) pero del ao actual, que es extrado del resultado de la frmula Fecha() en la ltima columna.

121

Consultas avanzadas

ACCESS 2000 AL MXIMO

Obtener la antigedad de un vendedor


Como se habr visto hasta aqu, cada empleado recibe un plus segn la cantidad de aos trabajados. Eso est perfecto. En realidad, lo que no est bien es que uno mismo escriba la antigedad de cada vendedor; habra que estar acordndose cundo comenz a trabajar en la empresa esa persona. Imposible! Mucho mejor sera escribir la fecha de ingreso en los datos personales y que Access solito se encargue de calcular cunto tiempo hace que trabaja esa persona (teniendo en cuenta el da en que se est haciendo la liquidacin). Parece tarea fcil, pero no lo es tanto.

Cmo obtener la antigedad

PASO A PASO

Antes que nada habr que hacer algunas modificaciones a las relaciones y a los campos de las tablas. En sntesis: por un lado, borrar la relacin que hay entre Datos personales y Antigedades; por el otro, cambiar el campo Antigedad de la tabla Datos personales por otro campo llamado Fecha de ingreso. S, claro, ste no es un cambio que se vaya a hacer todos los das. En realidad hubiese convenido comenzar a crear la tabla de esta manera, pero la otra resultaba ms fcil para explicar bien las relaciones.

Figura 38. Despus de borrar la relacin, borrar los datos viejos, cambiar el tipo de campo y su nombre, e ingresar los nuevos, la tabla debera verse as.

Hecho esto, daremos comienzo a la creacin de la consulta que se encargar de determinar la cantidad de aos de antigedad de cada vendedor. sta debe contener en su diseo nicamente la tabla Datos personales. Aqu slo hay que agregar a la cuadrcula QBE los campos Cdigo de Vendedor y Fecha de Ingreso.

122

Operaciones con fechas

Figura 39. Por ahora, el diseo de la consulta queda con estas frmulas. Las dos ltimas columnas tienen un ttulo acorde a lo que muestran.

Figura 40. Los resultados: en realidad no estn del todo bien. Ya los perfeccionaremos, no hay que preocuparse.

123

Consultas avanzadas

Existe una frmula que es la ms adecuada para restar dos fechas: DifFecha(). S, por supuesto, podramos restar las fechas manualmente, sin necesidad de utilizar ninguna frmula especial (ej.: [Fecha actual] [Fecha de ingreso]). Eso funciona, pero esta frmula dar una pequea ventaja: se puede obtener el resultado en aos transcurridos, meses o das. Cmo funciona? DifFecha(aaaa;[Fecha de ingreso];[Fecha actual]). El primer detalle es el orden en que deben ponerse las fechas: primero la inferior y luego la superior. El otro detalle es escribir las a entre comillas: aaaa obtendr los aos transcurridos entre ambas fechas m los meses d los das (aunque si pusiramos una sola a obtendramos el mismo resultado).

ACCESS 2000 AL MXIMO

TRUCOS

ACCESS 2000 FRMULAS LARGAS VS. POCO ESPACIO


Cuando tengamos que crear una frmula verdaderamente larga y compleja, lo mejor es presionar la combinacin de teclas Shift+F2, que abrir una ventana llamada Zoom, donde podremos editar la frmula mucho ms tranquilos y no tener que hacerlo en una columnita angosta.

Al mostrar los resultados en la Figura 40 mencionamos que no estaban bien. Por qu? El ejemplo ms claro lo brinda el vendedor nmero 3. La frmula dice que ya tiene un ao de antigedad, pero si nos fijamos bien veremos que ste ingres el 14/12/98 y la liquidacin se est efectuando el 03/12/99, o sea que en realidad todava no se ha cumplido ese ao en el momento de liquidarle el sueldo. Cul fue el problema? Que al restar las dos fechas y dar el resultado en aos, Access redonde el nmero. Qu significa redondear? Que si el resultado da ms de 0,5 lo redondea hacia arriba (1), y si da menos de 0,5 lo redondea hacia abajo (0). En realidad, los aos siempre deberan redondearse hacia abajo porque, aunque falte muy poco para que se cumpla el prximo ao, ste no tiene por qu computarse como cumplido. Qu se hace en este caso? Hay solucin. A seguir leyendo. Lo mejor va a ser obtener el resultado en das. Para ello, en vez de aaaa, ponemos una simple d. Una vez cumplida esta tarea, agregamos una nueva columna que divida ese resultado (tiempo trabajado) por 365, que legalmente es la cantidad de das del ao.

Figura 41. El cambio en el diseo debe verse as.

124

Operaciones con fechas

Qu faltara para concluir esta consulta? Redondear hacia abajo el resultado de la columna con decimales. Para ello hay que echar mano a una nueva frmula: Ent(). Cul es su funcin? Obtiene el nmero entero (redondeando hacia abajo). Por ejemplo, si hay un 4,99, el resultado ser 4 y no 5 como hasta ahora.

Figura 43. As se debe armar la frmula. Hay que considerar que slo se ven las ltimas columnas del diseo de la consulta, debido a su extensin.

Figura 44. Por fin! La antigedad correcta para cada vendedor de la empresa. Si todava no lo hicimos, guardamos la consulta con el nombre Obtencin de antigedad.

TRUCOS

REDONDEO HACIA ARRIBA Y HACIA ACCESS 2000 ABAJO SEGN CORRESPONDA


Si se quiere redondear un nmero con decimales, existe una frmula especfica para ello: Round(). Debe escribirse en ingls, pues Access no toma Redondear(). Si el nmero es mayor a 0,5 lo har hacia arriba y si es menor hacia abajo.
125

Consultas avanzadas

Figura 42. Comparando con la Figura 40 podr advertirse cules eran los datos que estaban incorrectos por haberse redondeado hacia arriba (Vendedores 1 y 3).

ACCESS 2000 AL MXIMO

Integrando todo
Se acuerda de la consulta que liquidaba todos los sueldos? Bueno, ahora tendremos que modificarla un poquito para que siga funcionando con los cambios realizados hasta el momento. Simplemente habr que agregar la tabla Obtencin de antigedad y relacionar el campo Antigedad real con el de Antigedad de la tabla Listado de antigedades. Es ms fcil mirarlo en las figuras que leerlo.

Figura 45. As debe quedar rediseada la consulta. Ejectela, mrela feliz, y tmese un descanso antes de seguir leyendo.

El generador de expresiones
Muchas personas recurren al generador de expresiones a la hora de elaborar clculos complejos. Puede resultar muy til cuando en los Formularios (tema que veremos ms adelante) se debe hacer referencia a campos que provienen de distintas tablas. Tambin tiene una lista de funciones y operadores desde donde poder elegir lo que uno desea, aunque no provee ayuda on line de cada una, como s lo hace Excel. Para activarlo hay que hacer un clic derecho sobre el lugar donde ira la frmula, y del men contextual elegir la opcin Generar.... En ese momento aparecer la ventana que se describe en la siguiente Gua Visual.

126

El generador de expresiones

GUA VISUAL N 1

rea donde aparece la frmula que est elaborndose. Botones con los operadores lgicos ms comunes. Lista de tablas, consultas, formularios, funciones, etc. stos son todos los objetos que componen la base de datos. Por ejemplo, al hacer doble clic sobre el + de la carpeta Tablas, aparecer un listado con todas las tablas existentes en esta base. Al cliquear sobre cualquiera de ellas, sobre el rea numerada con el tem 4 aparecern todos los campos que posea; basta con doblecliquearlos para incorporarlos a la frmula que se est elaborando. En este caso, en vez de campos se estn visualizando todas las categoras de funciones disponibles. Categoras en las que estn divididas las funciones. Aqu tambin aparecen los campos de las tablas, consultas, formularios o informes, cuando alguno de estos elementos es seleccionado. Lista de funciones pertenecientes a la categora Todas.

Para poder armar la frmula que se observa en el tem 1 de la Gua Visual, hay que cliquear sobre cada una de las zonas encerradas entre los smbolos << y >> y all pegar o escribir lo que uno quiera en esa parte de la frmula.

127

Consultas avanzadas