miércoles, 20 de enero de 2010

Consultas paramétricas en Access

Access nos permite extraer información almacenada de diversas formas. Puede suceder que en ciertas ocasiones pedimos unos datos a Access mediante una consulta. Más tarde volvemos a pedir información con otra consulta. Si realizamos varias consultas que son iguales pero cambiando solo el valor de los criterios, entonces Access permite realizar todo el conjunto de consultas en una sola. Se hace a través de las consultas paramétricas. Éstas cada vez que se ejecutan nos va pedir que demos valor a los criterios dentro de la consulta. En cada ejecución de la consulta podemos modificar el valor de los criterios. Es decir, establecemos el valor de los criterios en cada ejecución de la consulta. Por lo tanto, irán cambiando los resultados de la consulta cada vez.

Vamos a verlo con un ejemplo. Creamos una consulta en vista diseño, en la cual vamos a trabajar con la tabla Productos, de la que nos va interesar extraer los precios de los productos comprendidos entre dos precios, que determinaremos en el momento de hacer la consulta. Bajamos a la cuadricula de diseño los campos NombreProducto y PrecioUnidad. En la fila de criterios de este último campo ponemos el criterio siguiente:

Entre [Precio más bajo] y [Precio más alto]

Así, en cada ejecución Access pedirá ambos precios. Para que nos pida esos valores, usamos los corchetes, que encierran la pregunta para establecer el criterio. Como queremos dos datos, usamos los corchetes dos veces, para que nos pida ambos precios. El diseño de la consulta queda como sigue:


Ejecutamos la consulta, y Access nos pide el precio más bajo de la siguiente forma:


Escribimos el precio más bajo que nos interesa y pulsamos en aceptar. A continuación aparece la otra ventana donde tecleamos el precio más alto y pulsaremos en aceptar:



El resultado serán los productos comprendidos entre los dos precios introducidos:





En otro momento volvemos a ejecutar la consulta, pero cambiando los precios que nos pide para obtener otros productos.

El precio más bajo que introducimos ahora es:



Y el precio más alto es:


Con lo que el resultado de la consulta queda así:


Como vemos, con una sola consulta obtenemos distintos resultados. El valor de los criterios están parametrizados, y se establecen en el momento de ejecución de la consulta. Es interesante, ya que nos permite ahorrar espacio en disco, además de diseñar solo las consultas que sean necesarias.

miércoles, 13 de enero de 2010

Consultas en Access

Vamos a intentar explicar de la mejor manera posible como se realizan determinadas peticiones de información a Access. El medio es crear un objeto de Access al que denominamos consulta.

Unir en un solo campo el contenido de los campos NombreCompañía y NombreContacto de la tabla Clientes.

En primer lugar, crearemos la consulta en vista diseño, subiremos la tabla clientes para tener disponibles los campos con los que nos interesa trabajar.

Ahora nos colocaremos en la primera columna de la cuadricula de diseño, en la mitad inferior de la vista diseño de la consulta, donde teclearemos lo siguiente:

Compañía y contacto:[NombreCompañía]&" "&[NombreContacto]

El texto que está antes de los dos puntos : va a ser el nombre que tenga el nuevo campo. Si no ponemos nada par el nombre, Access por defecto lo nombrará como Expr1.
Después escribiremos el nombre del primer campo que queremos unir. Importante, los nombres de los campos siempre irán encerrados entre corchetes. Para unirlo o pegarlo a otro elemento se usa el carácter &, por lo tanto, lo ponemos. Como no queremos que los dos campos estén unidos sin espacio entre ellos, le añadimos un espacio, que se incorpora encerrándolo entre comillas. Así se hará con cualquier carácter que queramos añadir.

Para colocar el segundo campo colocaremos el segundo & y escribimos el nombre del segundo campo entre corchetes. Podemos unir en un solo campo, el número de elementos que nos interese. Hay que tener cuidado que cada vez que coloquemos un nuevo campo o carácter, no hay que olvidarse de escribir el &. Este símbolo sirve y actúa como unión entre los campos y caracteres que queremos colocar en el nuevo campo. En la consulta la expresión se verá así:




Ahora ya solo nos queda ejecutar la consulta, y para ver el resultado de la misma, pulsaremos en el primer icono de la barra de herramientas (Vista). El resultado que nos mostrará la consulta será el siguiente:



Esto era lo que nos pedía la consulta.

Listar la descripción de las categorías de alimentos que no sean bebidas

En esta consulta tenemos que visualizar todas las categorías excepto una. En una consulta, en vista diseño, subiremos la tabla de categoría, bajaremos el campo NombreCatergoría y colocaremos el cursor en la fila de criterios. Para negar algo en primer lugar escribiremos Negado y después se teclea la categoría que queremos que no aparezca, en este caso bebidas. Por tanto, la vista diseño de la consulta será:


En el resultado vemos que aparecen todas las categorías excepto la que hemos negado, bebidas:

jueves, 31 de diciembre de 2009

Como crear una macro

En esta nueva entrada vamos a tratar de explicar como realizar una macro que permita automatizar un conjunto de tareas en un solo clic. Después se podrá asociar la macro a un icono o a un botón.

Para poder escribir el código de la macro, en primer lugar, vamos al menú herramientas, seleccionamos macro y a continuación pinchamos en el editor de visual basic. Lo podemos ver en la siguiente imagen:


Mediante teclado podemos hacer lo mismo con Alt+F11. En dicho editor ahora vamos al menú Insertar y seleccionamos la opción Módulo como muestra la imagen:


A continuación aparece la ventana donde podremos teclear el código de la macro. Ahora en la ventana recién aparecida teclearemos la palabra reservada sub y después el nombre de la macro, finalizando dicha línea de código con un abrir y un cerrar paréntesis. En la siguiente imagen el nombre que hemos dado a la macro es mimacro. Después de teclear los paréntesis pulsamos la tecla intro y se genera, de forma automática, una línea en blanco y el texto end sub:
A partir de ahora ya estamos en disposición de teclear el código que nos interese que ejecute está macro. Importante, todo el código debe ser introducido en la línea en blanco, la que tiene el cursor. Podemos introducir desde una sola acción hasta lo que estimemos oportuno, por largo que sea.
El módulo que hemos insertado lo podemos ver en la ventana denominada Explorador de proyectos. Aparece como módulo1 debajo de la carpeta módulos que cuelga de VBAProject(Libro1). La siguiente imagen lo muestra:
Una vez introducido todo el código que nos interesa podemos pulsar en el botón guardar (icono con la imagen de un disquete) y solo nos resta salir del Editor de Visual Basic. Pulsaremos en el botón de cerrar la ventana.
Para ejecutar la macro podemos hacerlo de varias formas (imagen, botón de comando...), pero es tema para otras entradas posteriores a esta.
!Feliz Año 2010 a todos!

miércoles, 30 de diciembre de 2009

Funciones útiles en Access: IZQ y DER

En Access, a parte de trabajar con los distintos objetos que tiene, también lo podemos complementar, haciendo la aplicación mas completa, utilizando las distintas funciones internas que tiene. En esta entrada nos vamos a detener en dos: izq y der.

En primer lugar, a modo de introducción, comentaremos que para insertar una función cualquiera en un formulario o informe, usaremos un cuadro de texto. En el mismo, o dentro de sus propiedades (doble clic sobre el cuadro de texto), seleccionaremos la propiedad origen de control donde, para colocar una función escribiremos en primer lugar el signo =, y después se teclea la función con sus correspondientes argumentos.

En el caso de izq, necesitaremos dos argumentos. Dicha función devuelve los n primeros caracteres del contenido de un campo o de una cadena de texto. El primer argumento debe decirnos a que campo se refiere la función, de donde va a obtener los caracteres, y el segundo nos marcará cuantos caracteres del comienzo del campo nos va a interesar. Veámoslo con un ejemplo:

Si queremos obtener los dos primeros caracteres del nombre de cada cliente de una base de datos con la tabla clientes, y que esta, a su vez, contiene el campo NombreCliente, teclearemos en un cuadro de texto que lo represente lo siguiente:

=izq([Nombrecliente];2)

Si queremos que nos devuelva el primer carácter entonces el segundo argumento será 1.

Con la función der ocurre exactamente lo mismo, con la diferencia que los caracteres que devuelve son los últimos del contenido del campo marcado en el primer argumento. Por tanto:

=der([Nombrecliente];3)

En este caso nos devolverá los últimos 3 caracteres de los nombres de los clientes.

Una utilidad interesante de la función izq es crear un índice alfabético de productos o de clientes, haciendo que la función nos devuelva el primer carácter para que nos sirva de título de cada letra del alfabeto.

sábado, 21 de noviembre de 2009

Permitir longitud cero

Cuando creamos nuevas tablas en Access, normalmente se realiza a través de la vista diseño de la tabla. Para modificar algo también accedemos a dicha vista. En esta entrada vamos a comentar un par de propiedades de la misma. Nos referimos a Permitir longitud cero y a Requerido.

Permitir longitud cero

Permitir longitud cero admite dos posibles valores, Sí y No. Si está con valor significa que podemos introducir una cadena de longitud cero en el campo. Esta cadena se puede puede representar como "" sin nada dentro de las comillas. Con el valor No no se admitiría esta cadena.

Requerido

La propiedad Requerido indica que ese campo no se puede dejar en blanco, sin datos. Todos los campos pertenecientes a la clave principal de una tabla tienen la obligación de poseer datos, no pueden estar vacíos. El resto de campos no tienen, en principio, esa obligación. Pero si la propiedad Requerido de un campo está a , significa que no podemos dejar de introducir datos en ese campo. Necesariamente introduciremos información para cumplir con la exigencia de esta propiedad.

Sin embargo, puede ocurrir que, en ciertas ocasiones, no tenemos el dato para ese campo y resulta que con Requerido activado, Access nos obliga a introducir información en el mismo. ¿Qué podemos hacer? Si la propiedad permitir longitud cero está activada (valor Sí), que hacemos es pulsar la barra espaciadora, y de esta forma podemos pasar a otro campo sin problemas. Más tarde, con la información en nuestras manos, introducimos el dato sin problemas.

En definitiva, ambas propiedades están relacionadas. Con permitir longitud cero y requerido a sí podemos dejar la introducción de datos para más tarde. Si tuviésemos requerido a si y permitir longitud cero a no, entonces Access no permite introducir una cadena de longitud cero en el campo, y estaremos obligados a introducir información, dar a la barra espaciadora no se permite.

lunes, 9 de noviembre de 2009

Relación de varios a varios

Vamos a seguir trabajando el tema de las relaciones entre tablas. Después de ver las relaciones uno a varios y uno a uno, ahora toca ver la relación varios a varios. En este tipo de relación un registro o fila de una tabla puede estar relacionado con varios registros o filas de la segunda tabla. Por el otro lado, un registro de la segunda tabla puede estar relacionado con una o varias filas de la primera tabla.


Con esta entrada vamos a ver el proceso de construcción de una relación de varios a varios entre dos tablas. Hemos construido una base de datos llamada atletismo. Creamos dos tablas, una a la que denominamos Pruebas. Esta es su vista diseño:




La otra tabla, Atletas, contiene los datos de los atletas que compiten en las distintas pruebas:





Para poder establecer la relación entre ambas tablas, Access necesita otra tabla. Servirá para poder establecer una relación de varios a varios. La tabla intermedia para este caso la llamaremos Marcas, donde guardaremos los tiempos, distancias, saltos obtenidos en las distintas pruebas por los atletas:






En esta tabla, como vemos, hemos llevado una copia de las claves principales de las tablas pruebas y atletas. Su clave principal va a estar formada por tres campos: IdAtleta, IdPrueba y fecha. Se ha incluido fecha como parte de la clave principal, para tener en cuenta que cada atleta pueda participar en una prueba varias veces por existir series clasificatorias. Recordando, para establecer una clave principal compuesta por varios campos, es preciso seleccionar previamente esos campos y después haremos clic sobre el botón clave principal.

Ahora que tenemos las tablas necesarias vamos a construir la relación. Abrimos la ventana de relaciones, también se abre la ventana mostrar tabla. En la misma seleccionamos las tablas con las que vamos a construir la relación:

Seleccionamos las tres tablas con la tecla de control pulsada, pulsamos en agregar y cerramos esta ventana. El resultado es que la ventana Relaciones contiene las tres tablas.
A continuación, creamos las relaciones. En primer lugar, con el ratón arrastraremos el campo IdPrueba, de la tabla Pruebas, al campo IdPrueba de la tabla Marcas. Se abre la ventana Modificar las relaciones donde se observan las propiedades de la relación recién creada, como se observa en la siguiente imagen. En la misma, marcamos las propiedades de integridad referencial para evitar pérdidas accidentales de datos. Al final de la ventana vemos que esta relación de uno a varios. La razón es que una prueba puede estar relacionado con varios atletas con sus correspondientes marcas.




Repetimos este proceso entre las tablas Atletas y Marcas. Llevaremos el campo IdAtletas, de la tabla Atletas, a su copia, IdAtleta de la tabla Marcas. De esta forma queda creada otra relación de uno a varios entre Atletas y Marcas. Las propiedades de esta relación quedan visibles en la siguiente imagen:

Pulsando en el botón Crear la ventana se cierra quedando visibles las relaciones. El conjunto de las dos relaciones forman una relación de varios a varios entre las tablas Pruebas y Atletas. La siguiente imagen muestra las relaciones establecidas:



Es sencillo reconocer una tabla intermedia que permita construir una relación de varios a varios, si en la ventana Relaciones observamos una tabla cuya clave principal esté formada por varios campos, nos dará la pista de que es una tabla intermedia que forma parte de una relación de varios a varios.

Conclusión

En definitiva, para construir esta relación necesitamos una tabla adicional, Marcas, y crear dos relaciones. Las relaciones se crean entre una clave principal y su copia de la otra tabla, siendo esta la clave secundaria. El conjunto de los campos IdAtleta, IdPrueba y Fecha constituyen la clave principal de la tabla intermedia Marcas.

viernes, 6 de noviembre de 2009

Relaciones en Access: Uno a uno

Dado el desarrollo del tema dejamos para otra entrada la relación varios a varios. Aqui vamos a tratar de explicar un poco en que consiste la relacion uno a uno entre dos tablas. La relación, más común, uno a varios la vimos en una entrada anterior.

La relación de uno a uno es la relación menos común de todas. Es dificil encontrar este tipo de relación. Debido a que es escasa su presencia, creo que esta entrada pretende aclarar un poco en que consiste y como se construye.

Esta relación indica una relación en la que un registro de una tabla solo puede estar relacionado con un solo registro de la tabla en el otro lado de la relación y viceversa.

Esta relación puede servir para representar, por ejemplo, cierta actividad que realizan determinados trabajadores de una empresa.

Realmente este tipo de relación se tiende a evitar introduciendo los datos de una tabla en la otra.


Vamos a ver ahora como se construye en Access una relación de uno a uno. Para ello en primer lugar creamos dos tablas: aulas y cañones. Con ellas se pretende representar la realidad de un centro educativo. En cada aula existe un cañon. La clave principal de la tabla Aulas es IdAula. La clave principal de la tabla Cañones es IdCañon.

Para construir esta relación vamos a la ventana relaciones. Se abre pinchando en el botón Relaciones . Si ambas tablas no están las incorporamos desde la ventana Mostrar tabla.
Arrastramos la clave principal Idaula al campo IdCañon. En ese momento se abre la ventana Modificar relaciones que es como la que se ve en la siguiente figura. En la misma marcamos la opción Exigir integridad referencial. No es necesario marcar las opciones de actualizar y eliminar puesto que los campos que intervienen en la nueva relación son clave principal de sus respectivas tablas.


Al relacionar de esta forma ambas tablas, la ventana de la relacion recién creada muestra nos dice que tipo de relación es, lo podemos observar en la parte final de la misma.
A contnuación pulsamos en el botón aceptar, la ventana se cierra y se muestra la nueva relación en la ventana Relaciones tal como vemos en la siguiente imagen:

Los unos en negrita que aparecen nos indican como están relacionadas ambas tablas. Ahora podremos saber en que aula está cada cañon.
Resumiendo, podemos decir que este tipo de relación es la menos habitual. Por eso es interesante mostrar como se construye este tipo de relación. Entre dos tablas que tienen este tipo de relación un registro o fila de una de ellas está relacionado con un solo registro o fila de la tabla. En el otro sentido ocurre exactamente lo mismo.

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