Quantcast
Channel: Experiencias con Access
Viewing all 30 articles
Browse latest View live

Consultas con relaciones múltiples entre dos tablas

$
0
0
En el artículo anterior vimos cómo crear varias relaciones entre dos tablas, tarea que Access realiza mediante clones, y ahora veremos cómo podemos manejarlas.

El punto de partida

Se supone que, si Access te propone de manera automática crear un clon a partir de la segunda relación entre dos tablas, debería saber gestionarlas luego correctamente, pero por desgracia no es así.

Recuerda el esquema que tratamos anteriormente: usamos las tablas Líneas y Paradas para reflejar la primera y última parada correspondiente a una línea de autobuses.

Relaciones con clon

Pues bien, ahora queremos elaborar una consulta que nos diga, precisamente, el número de línea, el nombre de la parada inicial y el nombre de la parada final.

La consulta

Al crear una consulta desde la vista Diseño y añadir las tablas que necesitamos, ACCESS MUESTRA LA RELACIÓN DOBLE SIN CLONES.

Y si, como pudiera parecer lógico, añadimos a la cuadrícula el campo numerolin y dos veces nombre, ACCESS NO ES CAPAZ DE RESOLVER LA SITUACIÓN.

Relación doble entre dos tablas

En consecuencia, al ejecutar la consulta, Access no muestra ningún resultado, a pesar de haber datos relacionados en ambas tablas, ya que no sabe distinguir cada relación de manera individual.

La solución

¿Qué podemos hacer entonces? La solución es fácil de obtener aunque un pelín laboriosa. Todo pasa por eliminar relaciones, añadir y clones y volver a anexionar, y es que todas las modificaciones que se hacen en la vista Diseño se consideran temporales. Entonces será necesario seguir estos pasos:
  1. Eliminar la relación entre codparada y paradafin
  2. Añadir otra vez la tabla Paradas, de manera que Access genere un clon de la misma
  3. Crear la relación entre codparada de Paradas_1 y paradafin
  4. En la cuadrícula inferior, sustituir nombre de Paradas por nombre de Paradas_1


Relaciones temporales en diseño de consultas

Si has seguido correctamente los pasos, y el esquema es similar al de la figura, al ejecutar la consulta Access SÍ mostrará la solución correcta. Ten en cuenta que en la imagen siguiente para que el resultado quede mejor, hemos cambiado los títulos de las columnas, aportando de paso más información para el usuario.

Resultado de consulta con múltiples relaciones

Otra alternativa

Acabamos de ver la solución formal, pero si relacionaste los campos mediante Búsqueda, no será necesario (al menos en este supuesto) seguir todos estos pasos; con sólo mostrar la tabla Líneas, tendremos la solución a nuestro alcance ;)

Tabla con búsquedas bien enlazadas en Acccess



Consultas en campos que contienen asteriscos

$
0
0
En el primer artículo dedicado al Diseño de Consultas con criterios, indicábamos que el carácter comodín nos podía servir de ayuda en los campos de tipo texto.

Por ejemplo, fíjate en la siguiente imagen. Vemos una tabla denominada Artículos con dos campos, Código y Denominación:

Tabla de muestra con asteriscos dentro de un campo

Pues bien, vamos a imaginar que queremos consultar todos los artículos cuyo nombre contenga la letra A. El diseño de la consulta sería el que aparece a continuación:

Ejemplo de consulta con carácter comodín

El primer asterisco indica que puede haber o no un número indeterminado de caracteres delante de la a, y el segundo, lo mismo, pero detrás de dicha letra. Y el resultado será:

Resultado de una consulta

Pero…. ¿qué ocurriría si lo que necesito, es mostrar los registros en cuyo código existan asteriscos? En tal caso hay que combinar el uso del asterisco comodín con el asterisco carácter indicando como criterio: *[*]*

La manera de obligar a Access a que encuentre el carácter comodín, independientemente del resto de caracteres escritos en el campo es situar el asterisco entre corchetes. El resultado será:

Resultado de una consulta que busca los registros que contengan asteriscos

 ¿A qué no era tan complicado?

En pocas palabras: un buen manual de Access

$
0
0
Hace poco tiempo la editorial IdeasPropias contactó conmigo para que revisara el libro Microsoft Access: Diseño de aplicaciones sencillas de bases de datos y, si tenía a  bien, hacer una reseña en mi blog; así que como me gusta hacer colaboraciones de todo tipo, dije que sí sin pensármelo dos veces.
Microsoft Access: Diseño de aplicaciones sencillas de bases de datos

Reconozco que al recibir el paquete y empezar a ojear el libro me quedé un poco “a cuadros”, ya que me estaban proponiendo la revisión de un libro dedicado a Access 2007. Lo primero que pensé es que tenía que ser un error, teniendo en cuenta que 2013 está en la calle, pero que casi toda la formación que me demandan ahora mismo es para Access 2010.

No obstante, decidí revisar el contenido y debo decir que me alegro de haberlo hecho. Se trata de un manual bien elaborado que, a pesar de introducir teoría de diseño de base de datos que podría despistar a cierta tipo de público, se integra bien con explicaciones prácticas, sin dar nada por supuesto.

Además, en cada capítulo se incluyen actividades que ayudarán a comprender el funcionamiento de Access y al final de cada uno, podrás encontrar conclusiones y test de autoevaluación. Aparte, el libro físico viene con un CD que incluye diversos videos tutoriales.

Sin embargo, si pienso en las necesidades que me encuentro durante los cursos que imparto para empresas, tengo que reconocer que el capítulo dedicado a las Consultas podría estar más completo, ya que mi experiencia me ha demostrado que es el objeto más potente y el que todo usuario de Access debería dominar.

A pesar de lo anterior, tengo que concluir diciendo que es un manual, apto, útil y recomendable para personas que quieran empezar desde cero o para aquéllos usuarios que se limitan a introducir y modificar datos y desean avanzar en el manejo de la aplicación.

Cómo diferenciar el tipo de relación entre dos tablas

$
0
0
Desde mi experiencia como docente, creo que lo más complicado no es manejar una base de datos, sino hacer un buen análisis.

Partiendo de esta premisa, en las evaluaciones siempre pido el análisis en papel junto con la propia base de datos, y es curioso ver cómo hay personas que son capaces de solventar un mal análisis, aunque el resultad final no sea eficiente.

Tipos de relaciones

Comencemos por repasar las diferentes modalidades, suponiendo que tenemos dos tablas con información relacionada entre sí.

1 a 1: 
     Cuando un registro de la tabla A sólo se puede relacionar con un registro de la tabla B
1 a varios: 
     Cuando un registro de la tabla A se puede relacionar con varios registros de la tabla B
Varios a varios: 
     Cuando varios registros de la tabla A se pueden relacionar con varios registros de la tabla B

Base de datos: Tipos de relaciones entre dos tablas

Preguntas que debo hacerme

Estas dos sencillas preguntas te ayudarán definir correctamente la relación entre dos tablas:

Tiene una clave principal?
     Si es así, estaremos ante un extremo 1, lo que descarta automáticamente la tercera modalidad.

Cuántas veces puede aparecer cada elemento de A en la tabla B?
     Este supuesto es mejor analizarlo con un ejemplo concreto. Mira las tablas de la siguiente figura:

Tablas sin relacionar en una base de datos


Por un lado tenemos tablas auxiliares:
Clientes: lista con los datos de todos los clientes de una agencia de viajes.
Transporte: lista con los diferentes medios para cada viaje del catálogo
Tipos de viajes: catálogo de los productos que la agencia oferta, y que se alimenta de la tabla anterior.

Además, la tabla principal es:
Viajes:  lista de los viajes realmente contratados, por lo que deberá relacionarse con Clientes y con Tipos de viajes.

Suponiendo que la tabla A es Clientes y la tabla B es Viajes, piensa ahora en la relación entre  codigocliente y codigocli.

1ª  pregunta: En la tabla Clientes, ¿cuántas veces aparecerá cada cliente?
Respuesta: Como es la lista de todos los clientes, cada persona deberá aparecer sólo una vez. Además, si te fijas en la imagen, el campo codigocliente está marcado como clave principal, lo que garantiza que sea un extremo 1 dentro de la relación.

2ª  pregunta: En la tabla Viajes, ¿es posible que un mismo cliente contrate más de un viaje?
Respuesta: Si la respuesta es SI, como en este caso, la tabla B tiene el extremo varios de la relación.

Por lo tanto, definiremos la relación como del tipo Uno a varios.

Comprobación en Access

Para ver si Access coincide con nosotros, arrastra el campo codigocliente hasta situarlo encima de codigocli o viceversa. Al soltar el ratón, la aplicación muestra el cuadro de diálogo Modificar relaciones:

Cuadro Modificar Relaciones indicando el Tipo de relación en la parte inferior

Si te fijas en la parte inferior de la imagen, Access ya está indicando el Tipo de relación: Uno a varios. Si además activamos la opción Exigir integridad referencial y pulsamos el botón Crear, verás como Access dibuja dicha relación en el esquema.

Relación 1 a varios entre dos tablas de una base de datos

Conclusión

Has podido comprobar cómo, realizando las preguntas adecuadas, podemos detectar fácilmente el tipo de relación que se establece entre dos tablas diferentes.

En el siguiente artículo, abordaremos el tratamiento de las relaciones Varios a Varios, hasta entonces, no dejes de practicas y probar, y si surgen dudas, ya sabes que me tienes a tiro de comentario :)

Relaciones varios a varios: tratamiento

$
0
0
Aunque en artículos anteriores hemos comentado que el tipo de relación más habitual entre dos tablas  es de 1 a varios, hoy vamos a ver cómo tratar esta modalidad que, en la vida real, aparece con cierta frecuencia pero que Access no es capaz de gestionar de manera directa.

Ejemplo

Vamos a tomar nuevo como muestra la librería que ya hemos empleado en otros artículos, recordando la composición y relaciones que planteamos inicialmente:

Relaciones de una base de datos básica para libreria


Ahora bien, si pensamos en la relación que en la realidad podría existir entre Facturas y Libros, está claro que un libro puede aparecer en más de una factura, y al mismo tiempo en una factura pueden aparecer uno o más libros, y aquí está la clave: uno o más.

Si supiéramos a ciencia cierta que los clientes siempre van a adquirir un número X de libros distintos, por ejemplo 2 ó 3, podríamos definir nuestra tabla con la técnica de relaciones múltiples y problema solucionado.

Sin embargo,  la vida es complicada y el futuro incierto y no sabemos qué harán nuestros clientes, por lo tanto tenemos que definir nuestra base de datos de manera que responda a esta incertidumbre.

Tratamiento

Párate a pensar y visualiza en tu mente una factura, y si no, mira la imagen, verás que hay dos partes bien diferenciadas. Por un lado, tenemos el encabezamiento con los datos fijos; número, fecha, datos del cliente y de la expedición; y por otro, el cuerpo, donde aparecerán tantas líneas como artículos (sean libros o no) se compren.

Factura tipo con zona de Encabezado y Detalle


Pues eso es precisamente lo que tenemos que hacer en Access, vamos a dividir la tabla Facturas en dos diferentes para albergar el Encabezado y las Líneas de facturación

En Cabecera_ftra, hemos dejados los datos fijos que teníamos anteriormente pero también hemos añadido algunos nuevos de aplicación general: Nº Factura, Fecha, Código Cliente, Descuento Especial y Forma de pago.

La tabla nueva de detalle, que hemos denominado Lineas_ftra, deberá contener como mínimo Nº Factura y Código Libro, pero puede mejorarse añadiendo por ejemplo un campo de Descuento. 

Importante: En esta tabla no es necesario incluir campo clave, pero para que resulte eficiente, la propiedad Indexado del campo Nº Factura deberá tomar el valor Sí, con duplicados.

Después de la transformación, las relaciones de esta base de datos entre las tablas que hemos comentado quedarán de la siguiente forma:

Desdoble de tablas para tratar una relación varios a varios


Cuando trabajamos con este tipo de relaciones, a la hora de introducir los datos, lo habitual es hacerlo mediante un formulario con los datos de la Cabecera y un subformulario que muestre las Líneas de detalle.

Conclusión

Siempre que en una situación podamos aplicar un modelo de factura, albarán o similar, estaremos ante una situación como la que acabamos de exponer, pero espero que ya sepas cómo solucionar esta situación.

Nueva etapa, nuevo sitio

$
0
0
A partir de septiembre dejaré de publicar nuevos contenidos en este blog, ya que estreno web oficial en la que agruparé todos los contenidos con mi perfil profesional y colaboraciones.

Pero no creas que me olvido de ti, así que como me encantaría que siguiéramos en contacto, te animo a visitar www.luciamonterorodriguez.com y suscribirte en el enlace que verás a la derecha.¡Hasta pronto!

www.luciamonterorodriguez.com
www.luciamonterorodriguez.com

Cómo hacer una relación

$
0
0
En el post anterior comentamos los tipos de relaciones que pueden existir entre dos tablas, hoy vamos a centrarnos en la ejecución de las mismas.

Lo primero que debemos tener en cuenta es que los campos a relacionar deben ser del mismo tipo, aunque no es obligatorio que el nombre coincido.

Hay una pequeña excepción, los campos de tipo Autonumérico (habitualmente utilizados para los campos clave) sólo se relacionan con Numéricos Entero Largo, ya que en realidad son una modalidad de estos últimos. Otra nota a tener en cuenta es que las relaciones deberían establecerse ANTES de la introducción de los registros, es decir, con las tablas vacías.

Bueno, pues vamos a suponer que ya tenemos creadas las tablas para mecanizar los expedientes de los alumnos de un colegio. En primer lugar pulsa sobre el icono Relaciones de la barra de herramienta, después añade todas las tablas que necesites y situálas de forma que resulte cómodo trabajar, como en el ejemplo de la figura.


Vamos a relacionar el campo Codalumno de la tabla Alumnos con el correspondiente en Examen. Sólo es necesario arrastrar uno de ellos hacia el otro, al soltar el ratón aparecerá un cuadro de diálogo similar al siguiente:


Si exigimos la Integridad referencial, en la tabla Examen sólo se podrán añadir almunos que hayan sido creados previamente, por lo que resulta muy interesante marcar esta opción. Al activarla, se permite la habilitación de otras dos opciones: Actualizar en cascada, que permite modificar una tabla al cambiar algún dato en la original, y Eliminar en cascada que, por ejemplo, borraría todos los exámenes de una persona que hayamos eliminado en Alumnos, por lo que su uso resulta peligroso.

Tras activar las dos primeras y pulsar Crear, Access reflejará el tipo de relación según como la haya reconocido, en este caso de 1 a varios:


En caso de no haber activado la Integridad Referencial, sólo aparecerá una línea simple.

Enlazar tablas cuando ya están creadas

$
0
0
Tras un gran paréntesis, retomamos el blog ya con Access 2007 y lo hacemos partiendo del último post.

Si anteriormente vimos que al introducir datos en la tabla Profesor, debíamos a priori conocer el Código de la Asignatura que imparte para escribirlo directamente, nuestro objetivo ahora será que aparezca el contenido de la tabla auxiliar para que podamos elegir el código en caso de que no lo conozcamos.

Fíjate en la imagen, si nos posicionamos en el campo codasignatura, el cursor está en modo inserción; es decir, habrá que escribir el código de manera directa, pero vamos a cambiar esta forma de trabajar.
Si estuviéramos creando ahora las tablas, podríamos haber activado las búsquedas y enlazar las tablas en el momento de diseñarlas (tema que trataremos más adelante), pero como ahora no es posible, vamos a buscar otra solución.

En primer lugar, nos vamos a la Vista diseño, para lo cual pulsamos el icono de la Escuadra, situado al principio de la cinta de Inicio.

Ahora, verás la lista de campos con sus modalidades, por lo que deberemos colocar el cursor en codasignatura, que es el que nos interesa enlazar. Una vez situados, tenemos que activar la ficha Búsqueda, en la parte inferior de la pantalla.

El campo Mostrar control, aparece con el literal Cuadro de texto, pero deberemos desplegar la lista y escoger Cuadro combinado, ya que es la opción más cómoda para cualquier tipo de usuario. Al hacer la modificación, la pantalla cambiará para mostrar el siguiente aspecto:

Vamos a centrarnos en comentar las propiedades más importantes de esta imagen, pero recuerda que, simplemente con seleccionar una propiedad, en el área de la derecha Access mostrará un mensaje de ayuda al respecto.

En Origen de la fila, tendremos que seleccionar (no escribas el nombre aunque lo conozcas, la menor variación provocará un mal funcionamiento) la tabla o consulta que tiene los datos que nos interesan mostrar en el campo, en nuestro caso Asignatura.

Si el campo clave de la tabla Asignatura, aparece el primero en la lista de campos, no será necesario modificar la propiedad columna dependiente; de lo contrario, indica aquí su posición en la tabla de origen.
En Número de columnas hay que especificar cuántos campos de la tabla Asignatura quieres ver en la lista desplegable y, como mínimo, deberás escribir 2, uno para el código y otro para la descripción.

Activar la opción para mostrar Encabezados de columna, lo dejo a tu elección, a mi particularmente no me gusta, pero queda al gusto de cada cual.

Después hay que especificar el espacio dedicado (en centímetros y separados por punto y coma) para mostrar cada columna dentro de la lista, con la propiedad Ancho de columnas. Por ejemplo: 1,5;3  mostraría el campo codasignatura con un ancho de 1,5cm y asignatura con 3cm. Si no se especifica nada, Access asignará el espacio como crea conveniente. Al pasar a otra propiedad podrás comprobar como la aplicación añade el texto “cm” y además realiza un pequeño ajuste en algunas medidas.

De todas formas no te preocupes si luego no se ven correctamente los datos, en cualquier momento puedes volver a esta pantalla y realizar las modificaciones oportunas.

Filas en lista y Ancho de lista, también hacen referencia al aspecto de los datos que aparecerán en el campo y quedan a tu gusto, aunque en la segunda recomiendo poner la suma de los espacios especificados para todas las columnas (de forma razonable).

Limitar a lista permitirá añadir o no nuevos valores que no estén en la tabla Asignatura, aunque habrá que tener en cuenta lo dispuesto para las Reglas de integridad referencial marcadas al establecer las relaciones entre las tablas.

De manera similar, Permitir ediciones… dejaría al usuario la posibilidad de modificar la información de la lista, pudiendo además activar un Formulario de edición…

La última propiedad no la tocamos de momento por su carácter más avanzado, ya llegaremos ;)

Por lo tanto, después de haber preparado todas las propiedades, el resultado debería ser similar al de la figura:

Tras grabar los cambios efectuados, haz clic directamente en el icono Ver de la cinta de opciones. Si te sitúas en el campo codasignatura, Access mostrará ahora los datos de la tabla Asignatura en forma de cuadro combinado, como puedes comprobar en la imagen.




Sustitución de tablas con pocos Registros y Campos II: Integración con formularios

$
0
0
En el último post vimos que era posible eliminar una tabla y utilizar en su lugar una lista desplegable creada con el Asistente de búsquedas. Hoy vamos a realizar algo similar, pero a la hora de diseñar el formulario de trabajo.

Recuerda que en el campo Calendario de la tabla Empleados, se guardaba el código correspondiente a cada turno de trabajo, que enlazaba con la tabla Calendario ya eliminada.

Si, con la tabla Empleados señalada en pantalla, vamos a la cinta Crear y pulsamos el botón Formulario, Access nos muestra la siguiente imagen:

En Calendario, no aparece descripción alguna, sólo el código. Nosotros vamos a modificar este diseño para que de más información de una forma más atractiva.

En primer lugar, vámonos a la vista Diseño mediante el primer botón de la cinta. Allí seleccionamos el campo Calendario y lo eliminamos. Al efectuar esta operación, Access subirá la posición del campo Fecha_Contratación.

Ahora, vamos a ampliar la ventana y el área de datos para dejar espacio para el nuevo control que vamos a incorporar.

El control de formulario que nos interesa utilizar, es el marcado en la cinta como XYZ, pero asegúrate de tener activada la varita mágica, antes de pulsarlo:
 

Tras establecer en el área de diseño el tamaño que nos interesa para el control, se iniciará el asistente. En el primer paso, escribiremos el contenido que teníamos en los registros de la tabla Calendario y que ahora ya no necesitamos:

En el segundo paso, podemos escoger o no una opción predeterminada; en nuestro caso, el primero de los turnos. En el tercero, se asignarán los valores internos que se guardarán en el campo de la tabla Empleados y que deberán coincidir con los almacenados en el campo clave de Calendario (1, 2 y 3). En el cuarto, indicamos el campo de Empleados que enlazará con el control; para nuestro ejemplo: Calendario.

Ahora toca elegir diseño. Para la muestra hemos escogido Botones de alternar con Sombreado. Ya sólo queda escribir el título: Turno de trabajo, y Finalizar.

Para ver el resultado final, cambiamos de vista y avanzamos registros para comprobar que el control cambia en función de lo almacenado previamente en Empleados:

Bienvenid@s

$
0
0
Animada por comentarios en mi blog hermano de Excel, he creado éste en el que ahora nos encontramos con el ánimo de dar soluciones y resolver dudas relacionadas con Access.

En unos días intentaré empezar a colgar contenidos, y por supuesto, quedo abierta a vuestros comentarios y peticiones.

Hasta ahora!!
Viewing all 30 articles
Browse latest View live