martes, 28 de julio de 2009

Evitar que un campo supere el valor de otro campo en Access

En Access los datos se distribuyen en distintas tablas. Cada tabla, a su vez, se compone de varios campos o columnas que almacenan los datos que va a gestionar Access. Cada campo almacena datos de un tipo de datos concreto. Podemos determinar que propiedades va a tener ese campo, tipo de datos, como se a visualizar ese campo, valor predeterminado, etc.

También existe la propiedad Regla de validación que va permitir limitar los valores a introducir en el campo. Pero lo que no podemos hacer es establecer una regla de validación que afecte a varios campos al mismo tiempo. La regla de validación que vemos en la vista diseño de una tabla solo afecta al campo que tenemos seleccionado en ese momento.

En este post vamos a ver una forma de resolver este tema. Supongamos una tabla que en vista diseño presenta esta imagen:



Como vemos, hay dos campos de tipo Moneda, preciomax y preciomin. Evidentemente va a ver un rango de precios que va a estar entre estos dos valores. Ahora queremos que si, por error, introducimos un valor en el campo preciomin superior a preciomin, Access no debe dejarnos hacerlo. Esto no podemos hacerlo con la propiedad regla de validación de uno de los dos campos. La propiedad regla de validación está presente en Propiedades del campo en la mitad inferior de la vista diseño de la tabla.

La siguiente figura nos muestra las propidedades de un campo, donde podemos observar la propiedad regla de validación del campo que está seleccionado en ese momento.




Para establecer una regla de validación que permita limitar los valores de preciomax y preciomin pulsaremos en el botón propiedades . Nos aparece la ventana propiedades de la tabla, donde se ve que también existe la propiedad regla de validación. En la misma si que podemos relacionar como nos interese los valores introducidos en más de un campo. Como nos interesa que los valores de preciomax no sean inferiores al valor del campo preciomin, colocaremos una regla como se observa en la figura:





Siempre que se hace referencia en una propiedad a un campo, este debe ir siempre entre corchetes ([]).


Siempre que se introduce unos valores que no cumplen la regla automáticamente Access introduce un mensaje que nos indica el error cometido. Podemos personalizar ese mensaje a nuestro gusto. Para ello, completaremos la propiedad Texto de validación como muestra la siguiente imagen:




Cerramos la ventana Propiedades de la tabla, salimos de vista diseño guardando los cambios realizados, y vamos a comprobar ahora la regla que acabamos de crear.


En preciomax colocamos un valor inferior al valor de preciomin, inmediatamente Access responde con una ventana en el que aparece el texto de validación que acabamos de diseñar.


Pulsamos en aceptar y corregimos el error. Ya podemos continuar introduciendo datos en la tabla.

Criterios en un filtro avanzado de Excel

Como comentamos en una entrada anterior, vamos a hablar sobre como se pueden establecer criterios con un filtro avanzado de Excel.

En primer lugar, los criterios se colocan en celdas fuera de la lista. La primera fila contiene el nombre de los campos sobre los que se establecen los criterios o reglas que deben cumplir los registros que apareceran como resultado del filtro.

Las filas siguientes contienen los criterios que podemos establecer:


En el ejemplo se muestran distintos tipos de criterios que podemos establecer. Si queremos establecer un criterio sobre un campo determinado, se colocará en la columna en la que esté ese nombre de campo. En la tabla anterior el criterio >34 se establece sobre el campo IdCliente, C* va a afectar a los datos ubicados en el campo Nombre.

Tipos de criterios

Varias condiciones en una sola columna

En este caso pondremos cada criterio debajo uno del otro debajo del título del campo. Por ejemplo:

Nombre
Carlos
Javier
Sonia

El resultado serán todos los registros que tengan en el campo Nombre a Carlos o Javier o Sonia.

Condiciones en varias columnas

En este caso lo que ocurre es que los registros o filas que deben obtenerse deben cumplir todos los criterios marcados en cada fila. Si dos criterios están colocados en dos columnas diferentes, y además, están en filas distintas, el resultado serán las filas que cumplan al menos uno de los dos criterios


En el caso de la imagen se obtienen los registros cuyo nombre sea Carlos junto con los registros que la ciudad sea Madrid. Por supuesto uno o varios registros pueden cumplir ambas condicones, pero en este caso no es obligatorio. Ahora si ponemos los criterios de la siguiente forma:

Como vemos, ambos criterios están ahora en la misma fila, las filas que obtengamos al aplicar este filtro serán aquellas que cumplan ambas condiciones, si alguna de las mismas no se cumple en un registro, entonces ese registro no sale en el resultado del filtro.

Operadores
Para establecer criterios en campos de tipo numérico podemos usar los operadores siguientes:



Que nos permitiran establecer rangos de valores en un campo de tipo numérico. Por ejemplo, si para el campo IdCliente ponemos un criterio como >34 estamos diciendo que necesitamos todos los clientes que tengan su número de IdCliente mayor a 34. Si es <> 34 queremos que se muestren todos los clientes excepto el que tenga como IdCliente el número 34.
Caracteres comodín

Para establecer un criterio nos podemos apoyar en los caracteres comodín, que nos van a ayudara a ampliar el rango de resultados que nos interesa obtener.




Como vemos, el carácter ? sustituye a un carácter. Por ejemplo un criterio con él puede ser:

m?ro (cadenas de texto cuyo segundo carácter puede ser una u otra letra, en este caso puede ser mero o miro o moro o muro)

Si empleamos el carácter * estamos usándolo para sustituir a mas de un carácter. Posibles usos son:

  • M* (Cadenas de texto que empiezan por m)

  • *z (Cadenas de texto que terminan en z)
Con el carácter tilde (~) nos faculta para buscar texto que tengan cualquiera de los 3 caracteres de la tabla anterior (? * ~). Para buscar el carácter interrogante ? el criterio sería ~?.
Si queremos filtrar los registros que tengan en un campo exactamete un texto determinado entonces podemos hacer lo siguiente. Para localizar exactamente el texto Nepal lo colocaremos de la siguiente forma:


="=Nepal"


En definitiva, tenemos varias formas de elaborar los criterios para obtener los registros que nos interesan de una lista de datos.

miércoles, 22 de julio de 2009

Filtro Avanzado en Excel

Excel posee herramientas que nos permiten trabajar como si fuera una base de datos. Evidentemente no presenta el potencial de Access pero nos puede permitir obtener aquellos registros o filas de la base de datos que nos pueda interesar.

En esta entrada tenemos un listado de datos de los productos de la base de datos Neptuno (base de datos ejemplo de Access), desde la que obtendremos aquellos registros que cumplan determinadas condiciones.

Dichas condicones podemos establecerlas de dos formas, mediante autofiltro o con filtro avanzado. Lo vamos a hacer por este último camino.

En primer lugar debemos copiar los criterios a aplicar en un lugar fuera de la lista de datos

Para ello, copiaremos el nombre del campo o campos sobre los que vamos a establecer los criterios de selección. En la imagen vemos que se ha establecido un criterio sobre el campo idproveedor y como criterio hemos puesto 14. Significa que queremos obtener los registros de todos los productos que hayan sido suminstrados por el proveedor 14.
Al copiar el nombre de los campos sobre los que establecemos los criterios hay que hacerlo con cuidado, copiando o escribiéndolos de la misma forma que aparecen en la lista de datos.
Después ya podemos comenzar a aplicar el filtro avanzado.
En primer lugar activamos cualquier celda que esté dentro del listado de productos, así Excel la puede reconocer inmediatemente. A continuación vamos al menú datos donde elegimos la opción Filtro Filtro Avanzado como vemos en la figura:
Al aplicar esta opción se abre la ventana Filtro avanzado donde observamos que el rango de la lista de productos aparece en "Rango de la lista":
Colocamos el curso en Rango de criterios y seleccionamos el criterio que hemos copiado anteriormente, con lo cual el rango correspondiente pasa a estar como se observa en la siguiente imagen:

Ahora ya podriamos dar al botón Aceptar y obtendriamos el resultado del filtro, pero vamos a dar un paso más. Marcamos la opción Copiar a otro lugar. La casilla Copiar a: se activa. Esto nos permite seleccionar una celda, a partir de la cual se van a copiar aquellos registros que cumplan los criterios que hemos seleccionado anteriormente:
Pulsamos en el botón Aceptar y nos aparece el resultado a partir de la celda A86:
Lo tenemos en otro lugar y si el resultado tiene bastantes registros podemos aplicar otro filtro avanzado sobre él al objeto de focalizar la búsqueda de registros.
En posteriores entradas seguiremos trabajando con los criterios que podemos usar en un filtro avanzado y que resultados producen.

martes, 21 de julio de 2009

Crear un gráfico que muestre el grado de cumplimiento de un proyecto

Con estos pasos se trata de guiar al usuario para que pueda crear un gráfico que muestre el cumplimiento de un proyecto a lo largo de la ejecución del mismo. Utilizaremos un gráfico de barras de dos series que iremos modificando para obtener un gráfico que permite visualizar perfectamente el grado de ejecución del proyecto.

Crear un gráfico de barras

Usaremos el asistente para gráficos.
En primer lugar, colocaremos una tabla como:

Usamos los pasos del asistente seleccionamos un gráfico de columnas agrupadas que compare valores a lo largo de las categorías. En el paso dos, ponemos las series en filas, tal como muestra la siguiente imagen:

Eliminar leyenda y cuadricula

Eliminamos la leyenda y la cuadricula (simplemente seleccionándolas y pulsando la tecla Supr).



Dar formato a los ejes Y2 e Y1

Damos formato a la serie de datos Grado de cumplimiento para el eje Y2.



Para ello, seleccionamos la serie, vamos a la solapa eje y marcamos la opción eje secundario. Al marcarla la imagen queda como:



Después damos formato a los ejes Y1 (a la izquierda) e Y2 (a la dcha) seleccionándolos, hacemos clic en el botón dcho. del ratón sobre ellos, seleccionando la opción Formato de ejes


y haciendo clic en la pestaña Escala. Valor mínimo a 0, y el máximo a 100, la unidad mayor a 10 y la mínima a 5:




Quizá al pulsar en aceptar veamos que el eje de abscisas cruce en 80. Si es así, volveremos al anterior cuadro de dialogo donde el mínimo lo volveremos a poner a 0 para reproducir la imagen anterior.

Sobre el eje de la derecha Y2 realizamos las mismas acciones para obtener la siguiente imagen:


Después hacemos un clic sobre el 1 del eje de abscisas pulsamos en Supr para darnos:


Cambiar los colores

Ya solo nos queda modificar los fondos. El fondo del dibujo lo ponemos blanco




Lo mismo para los colores de la serie, botón derecho y formato de la serie y modificamos los colores para que quede de la siguiente forma:



Eliminar el área de trazado

También podemos eliminar el área de trazado seleccionando los límites más tenues (arriba y abajo) y pulsando en Supr. Con lo cual nos queda:



Resultado final

Así, ya lo tenemos. Si modificamos el valor del grado de cump. el gráfico lo refleja también:


Actualizar tablas en Excel

En el siguiente ejercicio vamos a ver como actualizar tablas en excel. Nos centraremos en modificar unos precios con código VBA. Modificare...