viernes, 21 de agosto de 2009

Como relacionar tablas en Access (I)

Access es un tipo de bases de datos relacional. Esto significa que los datos se guardan en distintas tablas, y las mismas están relacionadas entre si. Existen varios tipos de relaciones entre las tablas. En este post nos vamos a centrar en el tipo de relación más habitual, de uno a varios. Además vamos a ver como se construye, que significa y que nos va permitir trabajar con varias tablas a la hora de elaborar consultas o formularios.

Existen básicamente tres tipos de relaciones entre tablas:
  • De uno a uno
  • De uno a varios
  • De varios a varios
En Access los datos se almacenan en distintas tablas. Para tener bien diseñada la base de datos debemos relacionar adecuadamente las distintas tablas que componen la base de datos.

La relación de uno a varios es la más común de las relaciones, supone el 90% de todas las relaciones que se hacen. Nos va a permitir relacionar dos tablas.

En este tipo de relación, un registro de una tabla puede estar relacionada con varios registros de otra tabla.

En cambio, un registro de la segunda tabla solo puede estar relacionado con un registro de la primera tabla. La mejor forma de entender esto mostrando un ejemplo.

Tenemos una base de datos a la que he llamado Datos. Contiene dos tablas: Proveedores y Productos. Suponemos que cada proveedor puede suministrar varios productos y que cada producto solo puede tener origen en un solo proveedor.

Eso significa que cada proveedor puede estar relacionado con varios productos. Dicho de otro modo, un registro (o fila) de la tabla Proveedores puede estar relacionado con varios registros de la tabla Productos.

Así mismo, por el otro lado, un producto solo puede estar relacionado con un proveedor, es decir, un registro de la tabla Productos solo puede estar relacionado con un registro de la tabla Proveedores.

Por tanto, la tabla Proveedores tiene una relación de uno a varios con la tabla Productos. En la relación, el lado 1 es la tabla Proveedores y el lado de varios es la tabla Productos (un proveedor puede suministrar varios productos).

Construcción de la relación en Access

Ahora vamos a ver como se implementa esta relación con la base de datos Access.
Tenemos una base de datos de Access llamada Datos. En la misma tenemos dos tablas, Proveedores y Productos.
Para crear una relación, del tipo que sea, abrimos la ventana de Relaciones donde estableceremos la relación entre productos y proveedores. Para abrirla, pinchamos con el botón derecho en el fondo blanco de la ventana de la base de datos, como se observa en la siguiente imagen:


Al hacerlo se abren dos ventanas, Relaciones y mostrar tabla.

En la ventana mostrar tabla seleccionamos con el ratón la tabla proveedores y pulsamos en el botón Agregar. Hacemos lo mismo con la tabla Productos. Ahora cerramos la ventana mostrar tabla.
Para poder establecer este tipo de relación vamos a abrir la vista diseño de la tabla Productos (es la tabla del lado de varios en la relación que estamos construyendo). Pulsamos con el botón derecho en Productos y seleccionamos Diseño de la tabla, mostrándose la vista diseño de productos:

Para poder establecer la relación con proveedores, vamos a añadir un nuevo campo en la tabla productos. Será un campo del mismo tipo que Idproveedores de la tabla proveedores, número. Después de añadir el nuevo campo la vista diseño queda así:



Cerramos la vista diseño, guardamos los cambios y volvemos a visualizar la ventana relaciones. Ahora ya podemos crear la relación. Llevaremos con el ratón idproveedores (de proveedores) al campo recién creado idproveedor de la tabla producto. Ahora se visualiza la ventana modificar la relación donde marcamos Exigir integridad referencial, Actualizar... y Eliminar...


Pulsaremos en el botón Crear y la relación ya está creada. La imagen de la nueva relación se muestra a continuación:

Cerramos la ventana relaciones guardando los cambios y ya podemos seguir trabajando en la base de datos.
En los siguientes posts veremos la relación de varios a varios y de uno a uno.

jueves, 20 de agosto de 2009

Número de elementos no repetidos en una lista

Una hoja de cálculo Excel permite introducir largas listas de elementos. En ocasiones será necesario contabilizar cuantos elementos existen en una lista sin tener en cuenta las repeticiones de los elementos. Vamos exponer a continuación como contar los elementos de una lista sin tener en cuenta las repeticiones que pudieran haber.

La función contara realizaría el contaje pero teniendo en cuenta todos los elementos. Por tanto no nos sirve para este cometido. La función que nos a servir es la función bdcontara.

Dicha función, como otras funciones de base de datos, cuenta con tres argumentos:

bdcontara(base de datos; nombre del campo; criterios)

  • Base de datos: rango de celdas que componen la base de datos
  • Nombre del campo: Argumento opcional, indica la columna que usa la función. Podemos colocar el nombre del campo entre comillas, o colocar el número del campo, sin comillas.
  • Criterios: Es el rango de celdas que contienen las condiciones para que se puedan contar.
Ahora vamos a ver que valores han de tener estos argumentos para conseguir el número de entradas no repetidas. En pirmer lugar la lista que nos va servir de base de datos (primer argumento) está colocado en la columna A:



El segundo argumento, nombre del campo, lo dejamos vacío. Y como tercer argumento vamos a hacer uso de la función contar.si. Como es una condición debe devolver o verdadero o falso. No puede devolver otra cosa.

Como vemos, hemos usado una referencia absoluta, $A$2 y otra relativa, A2. Esto nos va permitir contabilizar los distintos elementos cuando no están repetidos pero no los repetidos pues la función contar.si devuelve un valor superior a 1. El texto Condición y la función contar.si están en el rango C1:C2

En la imagen siguiente, se ve como hemos implementado estos argumentos de bdcontara en otras celdas:


Para permitir introducir más empresas, el rango de la base de datos se ha hecho bastante amplio, desde A2 hasta A100. En el momento de acabar de introducir la función y pulsar en la tecla intro, se muestra el número de entradas no repetidas:



Si añadimos una nueva empresa en la columna A la función bdcontara lo reflejará automaticamente si es nueva la empresa, o no hará nada si es una empresa que ya ha sido introducida anteriormente.

domingo, 16 de agosto de 2009

Formas de ver los nombres definidos en una hoja de cálculo

Cuando trabajamos en Excel, realizamos gran cantidad de cálculos. Para que se realicen correctamente debemos tener cuidado y atención. Una forma de ayudar en esto es definir nombres en la hoja que podemos usar como argumentos de las distintas funciones que usamos facilitando la labor de cálculo. Así no tenemos por que utilizar referencias continuamente a otras celdas.

Crear un nombre que se puede usar después como argumento de una función es sencillo. Basta en primer lugar seleccionar el rango de celdas que vamos nombrar. Ahora, encima de la columna A tenemos el cuadro de nombres. Hacemos clic en él, y escribimos el nombre que queremos dar. Dicho nombre no debe contener espacios. Por último, solo queda hacer clic en la tecla intro. Ya tenemos definido nuestro primer nombre: Datos.



De la misma forma definimos un nuevo nombre al que llamamos datos_2.

Formas de visualizar nombres

1. Cuadro de nombres

Bien, ahora vamos a ver las distintas formas de visualizar los nombres que acabamos de definir.
La primera es muy simple. Basta hacer clic en la flecha del cuadro de nombres y ya tenemos la lista de nombres definidos:




2. Pegar nombre

Otra forma es pulsar la tecla de función F3, que provoca que aparezca la ventana Pegar nombre. Pulsamos en Pegar lista y de esa forma a partir de la celda activa se pegan las referencias de los distintos nombres definidos.


La siguiente imagen nos muestra en que lugar están definidos los distintos nombres:




3. Menú Insertar

Otra forma de ver los distintos nombres es a través de menú. Elegimos Insertar / Nombre / Definir.. que nos va a mostrar la ventana Definir nombre.


La ventana Definir nombre nos muestra los distintos nombres. Seleccionando uno de los nombres, la celda Se refiere a: mostrará el rango de celdas que lo define. Sino se marca ningún nombre la celda muestra la referencia de la celda que tenemos activa en ese momento.



4. Modificar el zoom

Otra forma de hacerlo es modificar el valor del zoom. Si su valor es inferior al 40% las líneas que marcan la división entre las celdas desaparecen y además nos muestran los distintos nombres definidos previamente en la hoja. La siguiente imagen nos muestra el resultado de colocar el zoom al 39%, permitiendo visualizar los distintos nombres de la hoja:

martes, 11 de agosto de 2009

Insertar varias hojas en Excel y en Calc

Por defecto en un libro nuevo de Excel se abren 3 hojas de cálculo, hoja1, hoja2 y hoja3. En muchas ocasiones trabajando en Excel vamos a necesitar insertar nuevas hojas de cálculo. Colocamos el ratón en una de las etiquetas presentes y hacemos clic en el botón derecho, donde elegimos insertar... Nos aparece la siguiente ventana:

Le damos a aceptar y automáticamente aperece la nueva etiqueta que nos dice que ya está insertada la nueva hoja, pudiendo trabajar en ella inmediatamente.

Nos podemos preguntar si siempre nos hará falta una sola hoja. Evidentemente no siempre será de esta forma. Si tenemos que trabajar con varias hojas mas, el proceso expuesto anteriormente habrá que repetirlo hasta conseguir el número de hojas que nos interesa.

Otra forma de conseguirlo sería insertar código que nos permita insertar el número de hojas de golpe. Este código lo podemos ver en el blog jld Excel que nos da dos formas de hacerlo con código.

Dentro del paquete ofimático de OpenOficce la hoja de cálculo Calc ya lo tiene implementado. Además de poder insertar una sola hoja, podemos decidir cuantas hojas queremos insertar, en caso de colocar una sola hoja también podemos cambiarle el nombre en la etiqueta. Veamos:

Al igual que en Excel hacemos clic con el botón dcho. en una etiqueta de una hoja, en este caso lo hemos hecho en la etiqueta hoja3, donde tomamos la opción Insertar hoja...


Apareciendo la ventana Insertar hoja. Vemos que se compone de dos secciones: Posición y Hoja. Dentro de esta última podemos decidir cuantas hojas nos interesa crear. En caso de insertar una hoja nos da la posiblidad de nombrar dicha hoja, para otro número de hojas, la opción Nombre aparece desactivada.



Para completar la acción en nuestro caso en Núm. de hojas hemos colocado 2, y hemos pulsado en Aceptar. El resultado es el que aparece en la figura siguiente:

Si hubiesemos querido que las hojas hoja4 y hoja5 apareciesen después de la etiqueta hoja3 en Posición marcamos entonces la opción Detrás de la hoja actual.

En resumen, Calc nos permite insertar varias hojas de cálculo con el ratón, mientras que en Excel vamos a necesitar de código para lograr el mismo objetivo.

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...