Microsoft Access 2000
Lección: 70
Capítulo: Cómo mostrar datos de dos o más tablas
Crearemos una consulta que mostrará toda la información que contiene la tabla de
Clientes, más el nombre y el porcentaje de comisión del vendedor asignado,
siendo estos últimos datos tomados de la tabla de Vendedores mediante la
combinación entre ambas tablas.
Creemos una consulta con dos tablas combinadas
1. Si no estamos en el cuadro Base de datos pulsemos el icono correspondiente.
2. Repitamos los pasos 1 a 4 del principio del capítulo para obtener la
disposición de ventanas de la figura 5.2.
3. Agreguemos ahora la tabla de Vendedores al panel de la consulta de la misma
manera que lo hicimos con la tabla de Clientes en los pasos 3 y 4 del mencionado
ejercicio y cerremos el cuadro Mostrar tabla (de la figura 5.1).
El panel de definición de consultas tendrá ahora el aspecto de la figura 5.8.
Notemos que al cargar la segunda tabla apareció indicada la combinación (figura
5.8). Ob-servemos que Access combinó automáticamente ambas tablas por el
campo CodVend, debido a que detectó que hay dos campos con el mismo nombre y el
mismo tipo de datos y que uno de ellos, en una de las tablas, es clave
principal.
Figura 5.8
Para obtener una representación gráfica como la de la figura, debemos pulsar el
botón de desplazamiento hacia abajo en la tabla de Clientes (o estirar esa
tabla hacia abajo, como en la figura), ya que inicialmente este campo no es
mostrado por no haber espacio suficiente. Pulsando sobre le borde inferior
o el superior de esta ventana podremos estirarla y así disponer del espacio
suficiente en el panel superior para mostrar todos los campos de la tabla.
La combinación que muestra la figura legará a la tabla de Clientes y a la de
Vendedores de manera tal que Access buscará por la Clave principal el registro
de Vendedores que corresponda al número de vendedor (CodVend) que se encuentra
presente en la tabla de Clientes.
No es necesario que los campos que producen la combinación tengan el mismo
nombre, pero en el caso de que los nombres sean distintos debemos efectuar la
combinación manualmente (ver más adelante), en cambio, siendo idénticos (igual
nombre y tipo de dato, que en este caso es By-te) y siendo uno de ellos
Clave principal, Access establecerá la relación automáticamente. Lo mismo
podemos decir respecto de la Clave principal: no es necesario que exista una
clave princi-pal para establecer una combinación como la de la figura, pero en
este caso de no existir, tendre-mos que establecerla manualmente.
Utilizar el mismo nombre para los campos que contengan el mismo tipo de
información pro-porcionará una mayor sencillez al diseño de nuestra base de
datos;
por otra parte no representa ningún riesgo de confusión, ya que Access
internamente identifica a todos los campos antepo-niéndoles el nombre del objeto
al que pertenecen: tabla, consulta, formulario, etc.
El procedimiento de combinar tablas es muy sencillo en ACCESS ya que se muestran
los objetos y las relaciones entre ellos en forma gráfica.
Si luego de cerrar el cuadro Mostrar tabla (ver figura 5.1) necesitáramos
incorporar datos de una nueva tabla, abriremos la consulta en modo diseñoy
pulsaremos
el botón mostrado aquí (que se encuentra en la barra de botones de Access) con
lo que aparecerá nuevamen-te el cuadro para agregar tablas.
El próximo paso: Agregar campos de las dos tablas
Comenzaremos por una consulta sencilla que incluya, de la tabla de Clientes, el
número, nombre del cliente, provincia y número de vendedor y, de la tabla
Vendedores el nombre del ven-dedor y porcentaje de comisión.
1. Pulsando doble clic en los campos correspondientes de las tablas que acabamos
de incorpo-rar al panel gris de la consulta, agreguemos a la cuadrícula
CodCli, Nombre, CodVend y CodProvin (de Clientes) y NomVend y PorComis (de
Vendedores).
2. Si es necesario desplacemos la lista de la tabla Clientes para ubicar el
campo Nombre.
3. Guardemos esta consulta asignándole el nombre Clientes por Vendedor.
4. Pulsemos el botón Modo hoja de datos y veremos el resultado (figura 5.9) que
se distingue de una tabla sólo por su título, el que nos indica que se trata
de una Consulta de selección.
Figura 5.9
Hemos mostrado algunos datos del cliente y los datos de vendedores y en adelante
podre-mos manejarlos como si pertenecieran a una misma tabla. Ahora hagamos
lo siguiente:
1. Pulsemos en una fila cualquiera que contenga datos, pulsemos sobre CodVend,
escribamos otro valor y pulsemos luego Return para confirmarlo. Observemos
que automáticamente cambia el texto del campo NomVend de esa misma fila en
correspondencia con el valor ingresado en el código. Esto nos muestra que la
relación se encuentra activa y responde inmediatamente.
2. Ahora, en el mismo o en cualquier otro registro, escribamos para CodVend otro
valor que no exista en la tabla de Vendedores, por ejemplo 4.
3. Pulsemos Flecha abajo para pasar a otro registro y así dar por aceptado el
registro actual. Aparecerá el cartel de la figura 5.10.
Figura 5.10
No se nos permitirá abandonar el registro ni será aceptado el valor ingresado
por no encon-trarse en la tabla de Vendedores.
4. Pulsemos Aceptar para cerrar este aviso y luego Esc para recuperar el estado
anterior del/los campos modificados.
5. Pulsemos Flecha abajo para confirmar el cambio.
Qué ocurre al cambiar datos de la tabla relacionada
Cuando creamos una combinación, estamos estableciendo un vínculo que llamaremos
Ser-vidor - Cliente. Esto significa que la primera tabla (en este caso Clientes)
utiliza un servicio que le presta la tabla Vendedores, que desempeña en este
caso la función de servidor.
Podemos cambiar también los datos que provienen de la tabla servidora y, en ese
caso, se actualizarán en la vista todos los registros que mostraban todos
esos datos, visualizándose ahora los nuevos.
1. Mantengamos abierta la consulta y abramos la tabla Vendedores, cuidando que
ambas se encuentren a la vista.
2. Probemos hacer algún cambio en los campos NomVend y PorComis (de la tabla
Vendedo-res) y verifiquemos en cada caso cómo cambian en la consulta todos
los registros que tienen asignado el vendedor que se modificó.
Esto nos confirma que se trata de hojas verdaderamente dinámicas que nos
muestran en cada momento los datos actualizados.
Cómo ingresar nuevos registros en esta consulta
Para que se puedan agregar registros a una consulta de este tipo, debemos tener
en cuenta un solo detalle: la misma debe incluir el campo CodVend de la
tabla de Clientes y no incluir el campo del mismo nombre de la tabla de
Vendedores. Esto significa que no podemos incluir en una consulta el campo nexo
de la combinación del lado del Servidor.
Esta restricción no representa ningún tipo de impedimento, porque sabemos que el
campo CodVend tendrá siempre el mismo valor en ambos lados de la línea
de combinación y por lo tanto no tendremos inconvenientes en incluir siempre el
campo de combinación de la tabla cliente.
Cómo dar altas de Vendedores desde Clientes
Esto no es posible debido a que al existir la combinación se verificará que todo
valor que co-loquemos en CodVend exista previamente en la tabla Vendedores,
avisándonos en caso contra-rio mediante el cartel de la figura 5.10.
Cómo modificar los datos de Vendedores desde Clientes
Es posible hacerlo y notaremos que al igual que ocurría cuando cambiábamos los
datos de la tabla de Vendedores desde la misma tabla, ahora que lo hacemos
desde la consulta se actuali-zarán todos los registros en donde se muestre el
dato que estamos modificando.
1. Abramos la consulta Clientes por vendedor y cambiemos el nombre de algún
vendedor.
2. Pulsemos Flecha arriba o Flecha abajo para actualizar el registro y notaremos
que han cambiado también todos los demás registros que utilizaban ese dato.
Lo que vimos constituye una enorme ventaja para aplicaciones personales o
sistemas utilizados por unas pocas personas pero debemos tomar las necesarias
precauciones si se trata de siste-mas de mayor alcance. Podemos imaginarnos que
en un sistema al que acceden muchos usua-rios no podemos permitir a cualquier
operador cambiar datos de la tabla de vendedores desde la misma consulta. Más
adelante aprenderemos a limitar las posibilidades de modificación en aque-llos
datos que son críticos para el sistema.