sábado, 29 de agosto de 2009

Relacionar tablas en Access (II)

En este post se pretende aclarar un poco más la relación de uno a varios explicado en una entrada anterior.


En dicha entrada comentábamos que un registro de la tabla Proveedores puede estar relacionado con varios registros de la tabla productos pero un registro de la tabla productos solo puede estar relacionado con un registro de la tabla proveedores.


Visualmente se observa en la siguiente imagen:


Como se observa, el proveedor Frutas del Norte (Idproveedor = 1) hasta ahora, ha suministrado 3 productos distintos. Lo podemos observar en las tablas por el campo Idproveedor. En productos, tenemos el campo Idproveedor que nos dice que proveedor, ya introducido en la tabla proveedores, suministra ese producto. Y de la misma forma con el resto de productos. El segundo proveedor los siguientes 3 productos y el proveedor cuyo id es 3 suministra los 3 últimos productos (ver imagen anterior).



Una vez establecida la relación entre las dos tablas, lo que no se podrá hacer es introducir un idproveedor en la tabla productos que no exista previamente en la tabla productos. La razón es que en la relación la tabla proveedores es el lado de uno y la de productos es la de el lado de varios.

lunes, 24 de agosto de 2009

Bloquear determinadas celdas en Excel

En ciertas ocasiones puede ser interesante que determinadas celdas no puedan cambiar su contenido, bien accidentalmente bien porque un usuario no habitual lo borre.

Todas las celdas por defecto están bloqueadas. Si queremos bloquear solo unas cuantas, y en las demás vamos a permitir introducir o modificar datos, lo primero que vamos a hacer es desbloquear todas las celdas.

En primer lugar seleccionamos todas las celdas de la hoja de cálculo, pulsamos en el cuadro que está encima del 1 que nos marca la primera fila (o debajo del cuadro de nombres).

Después vamos a Formato / Celdas y seleccionamos la pestaña Proteger que nos muestra la siguiente ventana:

Como hemos dicho, por defecto está marcado, se desactiva esa marca y todas las celdas dejan de estar bloqueadas.

El siguiente paso consiste en seleccionar aquellas celdas que queremos bloquear para salvar su contenido.

Volvemos a formato / celdas donde marcamos la casilla Bloqueada en la pestaña Proteger. Así las celdas que tenemos seleccionadas vuelven a estar bloqueadas. El resto de celdas no.

Por último, ya podemos proteger la hoja con contraseña o sin ella. Vamos al menú herramientas donde seleccionamos Proteger / Proteger hoja...:
Aparece la siguiente ventana:

Como vemos, podemos establecer contraseña para que nadie nos desproteja la hoja sin nuestro permiso. Ahora solo se podrán introducir datos en las celdas desbloqueadas.
Con estos pasos podemos tener las celdas que nos interesen bloqueadas.
Para desproteger las celdas volveríamos a Herramientas /Proteger y en el menú ahora se tiene la opción de desproteger la hoja.

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.

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