Página 1 de 1

¿Cómo puedo evitar repetir datos entre tablas?

Publicado: Lun Dic 16, 2024 4:10 pm
por DoctorNO
Hola a todos, soy nuevo en el foro y muy novato en esto.
Comento que es lo que quiero hacer:
Quiero hacerme una base de datos que será un inventario para almacenar mis componentes electrónicos en cajitas, me dedico a la reparación y a al desarrollo de circuitos embebidos, más por hobby que profesionalmente por que no se gana nada pero es mi pasión y me gusta jajaja.

Estoy utilizando Libreoffice Base 24.8.3.2 en el sistema operativo Linux ubuntu

Tengo ya hecha las tablas, una de resistencias, otra de condensadores y otra de coordenadas, voy a empezar con esas tres tablas solo para probar.
Están relacionadas entre ellas y en cada tabla de resistencia y condensadores hay un campo de coordenadas que es un desplegable para elegir de la tabla de coordenadas, la coordenada correcta

Las cajitas están ancladas a la pared en una matriz X e Y y mi idea es marcar las cajitas con unas coordenadas de por ejemplo L1C1-001 que su significado será el siguiente, L significa Línea, C significa Columna y 001 es por que cada cajita tiene tres compartimentos así que especifico en cual está

Pues como dije más arriba ya tengo las tres tablas relacionadas entre si sin posibilidad de repetir coordenadas en cada tabla, pero lo que quiero es que tampoco se repitan coordenadas entre las tablas de condensadores y resistencias, así que si meto un valor de resistencia nuevo, en la columna de coordenadas cuando le de al desplegable del campo de coordenadas, que solo salgan las coordenadas que estén sin usar y que esa coordenada no puedan estar usada por ninguna tabla.
Pues ese es el paso que no tengo ni idea de como implementar a ver si alguien me puede ayudar en eso.

Saludos

Re: ¿Cómo puedo evitar repetir datos entre tablas?

Publicado: Vie Dic 20, 2024 12:26 pm
por DoctorNO
Hola de nuevo, voy a plantear de otra manera mi pregunta, tengo una tabla llamda A con unos datos, en otra tabla llamada B tengo un desplegable para seleccionar los datos de la tabla A, ¿cómo puedo hacer para una vez que seleccione en la tabla B un dato de la tabla A por medio de un desplegable no aparezca el mismo dato en una nueva entrada de datos? pero no quiero que se borre el dato de la tabla A solo que desaparezca de la vista en la tabla B, y si borro ese dato en la tabla B que vuelva a aparecer cuando vuelva a meter datos.
gracias y un saludo, no se si me explico bien

Re: ¿Cómo puedo evitar repetir datos entre tablas?

Publicado: Sab Dic 21, 2024 5:28 am
por FJCC-ES
La base de datos adjunta tiene tres tablas, TablaResist, TablaConden, y TablaCoord. Todas las tablas tienen una columna que se llama Caja. La base de datos también tiene dos formularios para escribir datos en las tablas TablaResist y TablaConden. Cada formulario tiene una lista desplegable para seleccionar la Caja. Las listas
desplagables obtienen sus datos desde la consulta CajaSeleccion que contiene el código

Código: Seleccionar todo

SELECT "Caja" 
FROM "TablaCoord" 
WHERE 
  "Caja" NOT IN (SELECT DISTINCT "Caja" FROM "TablaResist" ) 
  AND 
  "Caja" NOT IN (SELECT DISTINCT "Caja" FROM "TablaConden")
La consulta muestra los valores de la columna Caja de la tabla TablaCoord que no se han usado en las otras tablas.

Re: ¿Cómo puedo evitar repetir datos entre tablas?

Publicado: Sab Dic 21, 2024 12:25 pm
por DoctorNO
Hola, buenos días y muchas gracias por tu ayuda.
He estado revisando la base que has compartido pero no funciona, puedo seguir seleccionando las mismas coordenadas una y otra vez en los dos formularios....

Re: ¿Cómo puedo evitar repetir datos entre tablas?

Publicado: Sab Dic 21, 2024 4:31 pm
por FJCC-ES
En la imagen, las tablas TablaConden y TablaResist ya usan las cajas C, E, e I. En el formulario FormConden, la lista no incluye C, E, e I. ¿Ve usted algo diferente?
Es verdad que el usuario puede escribir cualquier valor en la cajilla del formulario si no selecciona un valor de la lista. Para garantizar que cada caja aparece una vez en una tabla, puede seleccionar el menú Herramientas → SQL y ejecutar código como

Código: Seleccionar todo

ALTER TABLE "TablaConden" ADD CONSTRAINT CajaUniqConden UNIQUE ("Caja");
Claro, ese código no puede evitar que la misma caja aparece en TablaConden y en TablaResist.

¿No sería mejor tener una tabla para todos los componentes? Así sería fácil imponer un UNIQUE CONSTRAINT.

Re: ¿Cómo puedo evitar repetir datos entre tablas?

Publicado: Sab Dic 21, 2024 7:27 pm
por DoctorNO
Hola, lo que veo es que se puede repetir los valores incluso en las tablas diferentes, así es como lo veo yo:
Imagen

El problema reside en que tengo una matriz de cajas de unas 20 columnas por 20 filas y cada una de las posiciones hay 3 compartimientos eso hacen más de 3000 posiciones (y la idea es añadir más) y claro si cuando elija la posición no se oculta, cuando solo lleves añadidos 10 componentes pues será fácil pero cuando lleves más de 200 y no solo de resistencias y condensadores si no triacs, tiristores, mosfet, diodos, etc etc y a todo eso le sumas los componentes SMD se puede hacer un lío de tres pares de narices.
Lo que me comentas lo he pensado, meter todo en una tabla, configurar una restricción de no repetición pero lo importante es que desaparezca la posición de la vista del usuario al meter otro componente por que si no estarías metiendo posiciones y dando error hasta que logres encontrar una coordenada que no haya sido utilizada. ¿si lo hacemos en solo una tabla entiendo que por medio de consultas y formularios se podría separar los componentes?, ósea que mi idea es tener formularios separados por cada componentes y por medio de filtros ir directo a la posición que ocupa ese componentes que sea una búsqueda rápida del componente y no tener que estar mirando caja por caja hasta encontrarlo