duda relaciones entre tablas (principiante)

Dudas sobre Tablas, Consultas, Formularios, Informes...
yavuka
Nivel 1
Mensajes: 12
Registrado: Jue Oct 17, 2019 5:30 am

duda relaciones entre tablas (principiante)

Mensajepor yavuka » Jue Oct 17, 2019 6:18 am

Buenos días, aprovecho para saludaros a todos, pues es mi primera participación en este foro

Soy un usuario poco experimentado en Access y recientemente he empezado a diseñar una base de datos en mi empresa. Estoy confeccionando una base de datos en la que tengo 5 tablas:

- Una tabla con datos de clientes (campo clave “código cliente”)
- Una tabla con datos de pedidos (campo clave “pedido”, es un número de pedido) donde aparecen datos de clientes y pedidos (aquí no hay datos de productos aún)
- Una tabla con datos de pedidos y de productos (2 campos clave: “pedido” y “código producto”), donde aparecen los datos de los productos para cada pedido.
- Una tabla con datos de productos (campo clave “código producto”) con todos los productos existentes y su logística asociada.
- Una tabla con datos del área de envasado e incidencias. (campo clave “pedido” o/y “código producto”), donde aparecen nuevamente los datos de los productos de cada pedido (sólo código del producto) e incidencias asociadas.

Mi intención es hacer un aplicativo con un formulario que conste de 3 pestañas (tabbed form, siguiendo un video que he visto en youtube): una para datos generales del pedido, otra pestaña con productos y cantidades, y otra pestaña con datos e incidencias surgidas en el área de envasado.

Para ello, haré consultas con varias tablas para cada formulario (una consulta para los datos de los pedidos, otra para e insertaré 1 formulario principal (con datos generales del pedido), otro subformulario (con datos de productos y cantidades) y un tercer subsubformulario (dependiente de los otros dos) con datos para el área de envasado. Para este aplicativo, necesito poner contraseñas al formulario 1 (pedidos) y 2 (relación de productos del pedido), y dejar libre acceso el formulario nº3 (datos de envasado). Me interesa hace una tabla independiente con los datos del área de envasado porque creo que para dar permisos a los usuarios de cada formulario, tengo que hacer los 3 formularios por separado.

La principal dificultad es que no sé muy bien cómo enlazar la tabla con datos del área de envasado al resto de tablas. Al hacer las distintas combinaciones y probar las consultas de varias tablas para hacer los subformularios (para ver posibles incidencias, en la consulta utilizo campo "pedido" de tabla de pedido, campo "código producto" de tabla productos pedidos, campo "incidencia" datos envasado) , no consigo extraer datos, pues obtengo los campos de la tabla resultado de la consulta en blanco y el formulario también me aparece en blanco.

Según mi criterio (de inexperto), la secuencia de relaciones debiera ser:
- Código cliente de tabla cliente (relación 1 a varios) con pedido de tabla de pedidos
- Pedido de tabla de pedidos (relación 1 a varios) con código de producto de tabla productos-pedidos
- Código producto de tabla de productos pedidos (relación 1 a 1 con) con código producto de tabla datos de envasado
- Código de producto de tabla de datos de envasado (relación varios a 1) con código de producto de tabla de productos.

Notas: creo que el código de producto se repite demasiado ya que sirve de nexo de unión en 2 relaciones y he visto que no se suele repetir el campo clave como nexo de unión. Tengo dudas de si la relación entre código de producto de tabla de productos pedidos y código de producto de tabla de datos de envasado debe ser de 1 a 1.

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1124
Registrado: Sab Oct 24, 2015 10:12 pm

Re: duda relaciones entre tablas (principiante)

Mensajepor Sveinbjorn » Jue Oct 17, 2019 11:01 am

Yo si tuviera que diseñar esa BD, lo haría algo así:

Image 1.png


Las celdas con fondo serían los nombres de las tablas, y las que están en negrita, los campos clave principal.

Tengo mi duda en el campo Producto de la tabla Envasado, porque no sé si las incidencias se asocian solo a un pedido (en ese caso sobraría el campo y la relación con la tabla Productos) o van asociadas a cada producto del pedido (en tal caso habría que incluirlo como en la imagen).

A partir de ahí, hacer las consultas y formularios no tiene mayor dificultad.

Un saludo
Sveinbjorn El Rojo

yavuka
Nivel 1
Mensajes: 12
Registrado: Jue Oct 17, 2019 5:30 am

Re: duda relaciones entre tablas (principiante)

Mensajepor yavuka » Vie Oct 18, 2019 2:13 am

Buenos días,

Te agradezco mucho tu respuesta, Sveinbjorn, me es muy útil. Las incidencias irían en un registro para cada producto del pedido, así que para un mismo pedido podría haber varios registros asignados. He probado con todas las conexiones, creo, posibles, pero al hacer este esquema, al hacer la consulta, me salen los datos en blanco, creo que quizás estoy utilizando un orden de campos incorrecto. Mi esquema orden de campos es Tabla clientes (campo cliente), tabla pedidos (campo pedido), tabla pedidos productos (campo producto) y tabla detalles envasado (campo incidencias), pero me sale la consulta en blanco.

Otra consulta que me gustaría compartir es que necesitaría crear otra tabla con lotes por producto, pedido y número de cajas por lote. Mi esquema de tabla sería columna 1 (producto), columna 2 (lote) y columna 3 (cantidad de cajas del lote). La clave es que para cada pedido y producto puede haber varios lotes en función del día que se fabrique día de fabricación 1 (lote1), día de fabricación 2 (lote 2)... En principio había hecho varias columnas: lote 1, nº cajas de lote 1, lote 2 nº de cajas de lote 2, ... Pero creo que es una manera equivocada de hacerlo, pues debe haber un modo de poner una única columna de lote y número de cajas, pero me cuesta imaginarme cómo sería.

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1124
Registrado: Sab Oct 24, 2015 10:12 pm

Re: duda relaciones entre tablas (principiante)

Mensajepor Sveinbjorn » Vie Oct 18, 2019 9:55 am

El orden de los campos dentro de una consulta es indiferente para que ésta salga en blanco o no, lo que importa es la relación entre las tablas dentro del diseño de la consulta. Como sabrás (y si no deberías ojear algún manual, como los que tiene Neckkito en su web) hay 3 tipos de combinación que se pueden establecer entre tablas, que devolverán unos resultados u otros (todos los coincidentes, los de una tabla y los coincidentes de la otra...).

A mi me da que en alguna de las tablas no tienes datos, y como tienes la combinación por defecto, por eso no te muestra resultados.

Por ejemplo, si haces una consulta entre las tablas Clientes y Pedidos, con el tipo de relación por defecto, solo te saldrán los clientes que han hecho algún pedido. Si quieres que salgan todos los clientes (con o sin pedidos) y los pedidos, necesitas una combinación tipo 1 (mostrar todos los registros de clientes y los coincidentes de pedidos)

Para cambiar el tipo de relación, haz clic derecho sobre la linea que une las tablas, propiedades de combinación y elige el tipo más adecuado.

Tendrá que quedarte un diseño de relaciones con flechas en la dirección que están en la imagen.

En cuanto a la segunda cuestión, no creo que necesites una nueva tabla, tan solo un campo en la tabla detalle pedidos que sea un cuadro combinado con las opciones Lote1, Lote2....
Sveinbjorn El Rojo

yavuka
Nivel 1
Mensajes: 12
Registrado: Jue Oct 17, 2019 5:30 am

Re: duda relaciones entre tablas (principiante)

Mensajepor yavuka » Vie Oct 18, 2019 11:09 am

Gracias por la explicación. Creo que me queda clara la primera cuestión.

Con respecto a la segunda pregunta, no sé si lo estoy entendiendo bien. Si creo un cuadro combinado con lote 1, lote 2, lote 3,...., no sería lo que necesito (según lo estoy entendiendo) porque el valor del campo tendría que ser el valor de un lote concreto (no sería "lote 1", "lote 2", "Lote 3". Me explico: por ejemplo, para una referencia de un pedido que se empieza a fabricar hoy tendrían que poner en el campo de lote, por ejemplo "4123(el código de producto)181019" y mañana cuando terminaran de fabricar esa referencia tendrían que poner lote "4123(el código de producto)191019". Supongo que en la tabla, que tendría que tener como campo más concreto el lote, tendría que tener dos registros, uno para ese producto con el lote de hoy y otro para este mismo producto con el lote de mañana.

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1124
Registrado: Sab Oct 24, 2015 10:12 pm

Re: duda relaciones entre tablas (principiante)

Mensajepor Sveinbjorn » Vie Oct 18, 2019 12:38 pm

Sí me has entendido bien, para cada lote tendrás un registro.

Pero si haces una nueva tabla, según entiendo yo, necesitarías una segunda tabla en la que relaciones esa nueva tabla con la de detalles pedidos, para simular una relación muchos a muchos (igual que la que relaciona los pedidos con los productos), con lo que tendrías 2 nuevas tablas y seguirías con varios registros para cada terna pedido-producto-lote.

Si solo quieres un registro para cada pedido-producto con varios lotes, la solución es la que planteas incialmente (varios campos lote1, lote2....)
Sveinbjorn El Rojo

yavuka
Nivel 1
Mensajes: 12
Registrado: Jue Oct 17, 2019 5:30 am

Re: duda relaciones entre tablas (principiante)

Mensajepor yavuka » Dom Oct 27, 2019 2:03 am

Hola, Sveinbjor,

Si no es mucha molestia, ¿podrías indicarme gráficamente cómo hacer las relaciones entre tablas con los campos clave para tratar de tener una tabla (consulta) de varios lotes (registros) para cada uno de los productos que componen el pedido? Lo he intentado varias veces y, o bien, la consulta me sale en blanco o tengo problemas con las relaciones entre tablas.

Mi idea es registrar los lotes de todos los palets que de cada referencia que conforme el pedido (muchos registros para cada una de las referencias). Lo que había pensado es crear un subformulario basado en una consulta con un campo con el número de lote +fecha y hora de registro del lote, de manera que la hora (más concretamente, los minutos) diferenciarían cada registro, además tendría los campos "código de producto" y "pedido" enlazados con las tablas productos-pedidos.

He creado una tabla intermedia llamada "Lotes-productos" (que haria una función de enlace parecida a la tabla productos pedidos) con 2 campos: lote y código deproducto que, supongo, iría enlazada con la tabla "Productos pedidos" por el campo lote por un lado, y por el otro, a otra tabla que he llamado "lote" con el número de lote, hora y fecha de registro de lote. El problema es que no sé cómo conectarlas porque, como comentaba más arriba, me da errores.

Gracias de antemano
Adjuntos
relaciones entre tablas.png

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1124
Registrado: Sab Oct 24, 2015 10:12 pm

Re: duda relaciones entre tablas (principiante)

Mensajepor Sveinbjorn » Dom Oct 27, 2019 8:28 am

La tabla "Lotes Productos" se relacionaría con las tablas "Lotes" y "Productos" exactamente de la misma forma que relacionas la tabla "Productos Pedidos" con las tablas "Productos" y "Pedidos"
Sveinbjorn El Rojo

yavuka
Nivel 1
Mensajes: 12
Registrado: Jue Oct 17, 2019 5:30 am

Re: duda relaciones entre tablas (principiante)

Mensajepor yavuka » Mié Oct 30, 2019 8:26 pm

He estado probando varias opciones, pero no sé cuál es la correcta o sin son correctas. Al hacer una consulta con los datos de varias tablas para ambas opciones no obtengo registros. Quizás no estoy colocando las tablas en el orden correcto o no estoy haciendo la consulta de forma correcta. Para la consulta utilizo los camos "Pedido" y "código de producto" y "producto" de la tabla "productos pedidos"+ el campo lote de la tabla "productos lotes" y el campo "hora" de la tabla "lotes".

Posteo las 2 posibiilidades que creo que podrían ser por si me pudierais echar una mano. Le he dado ya unas cuanta vueltas y no consigo dar con el problema.
Adjuntos
RELACIONES TABLAS OP2.png
RELACIONES TABLAS OP1.png

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1124
Registrado: Sab Oct 24, 2015 10:12 pm

Re: duda relaciones entre tablas (principiante)

Mensajepor Sveinbjorn » Jue Oct 31, 2019 7:53 pm

Imagino que la imagen es de la Ventana de Relaciones de la BD y no de la consulta. Si es así, y tuviera que elegir una de las dos opciones, yo iría con la primera.

Tal como tienes la BD construida, tendría que devolverte los registros sin hacer nada más (siempre que los productos-pedidos tengan un lote). Si por hechas en falta algún registro, dentro de la consulta modifica las propiedades de la relación como te indicaba en una respuesta anterior.
Sveinbjorn El Rojo


Volver a “Objetos Access”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados