Cómo añadir registros en estructuras de árbol

Dudas sobre Tablas, Consultas, Formularios, Informes...
oliviergil80
Nivel 1
Mensajes: 9
Registrado: Dom Oct 07, 2018 10:33 pm

Cómo añadir registros en estructuras de árbol

Mensajepor oliviergil80 » Dom Oct 07, 2018 11:47 pm

Buenas a todos,

Soy un principiante en esto de Access así que mi pregunta resultará fácil para la cantidad de máquinas que hay por aquí :D

La situación es la siguiente:
Me he construido una base de datos en Access 2013 para poder sacarle utilidad a un libro de registro que cubre varios años.
Este libro contiene eventos, cada uno de los cuales tiene una serie de atributos, de más general a más particular, para simplificar: fecha, sitio, participante, técnica y resultado.
Esto genera una estructura de árbol para cada evento, más o menos así (perdón por el nivel de los gráficos :lol: )

ID evento + fecha (raíz) => sitio1 (rama nivel1) => participante1 (rama nivel2) => técnica1 (rama nivel3) => resultado1 (hoja)
· · · · · · · || · · · · · · · · · · · · || · · · · · · · · · · · · · · · · || · · · · · · · · · · · · · · · · · · ·||============> resultado2
· · · · · · · || · · · · · · · · · · · · || · · · · · · · · · · · · · · · · ||==============> técnica2 =========> resultado3
· · · · · · · || · · · · · · · · · · · · ||===========> participante2 =========> técnica1 =========> resultado4
· · · · · · · ||=========> sitio2 =========> participante1 =========> técnica1 ==========> resultado5

Para no repetir datos, en vez de crear una tabla única con un registro para cada resultado, con la consiguiente repetición de valores en los campos más generales, he creado una estructura con varias tablas de unión relacionadas que van encadenando desde el ID de evento hasta los resultados finales.
Cada tabla de unión refleja la combinación de un nivel del árbol con el siguiente, por ejemplo, la primera tabla de unión relaciona el ID de evento con el ID del sitio, creando una clave que se usa en la tabla de unión del nivel siguiente, en este caso la que incorporaría al participante. De esta forma, al final de la cadena, cada resultado final tiene asociado un código que marca la combinación: ID evento + sitio + participante + técnica, que le corresponde.

Mi pregunta es: ¿se entiende algo de lo que he dicho? :lol:
Para el que lo entienda... ¿es este enfoque correcto?
Y, si lo es, ¿cómo puedo crear un formulario que permita añadir en una única operación todos los registros generados en todas las tablas al transcribir un evento desde el libro a la base de datos?

Muchas gracias!
Un saludo,
Oli

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

Re: Cómo añadir registros en estructuras de árbol

Mensajepor Sveinbjorn » Lun Oct 08, 2018 9:03 am

Pues la verdad, mucho mucho yo no he entendido, aunque creo ver lo que pretendes... :lol:

Sería de ayuda para complementar tu explicación si subes una imagen de la estructura de tu BD (de la ventana de relaciones, vamos) para ver las tablas que tienes y cómo las relacionas.

Para adjuntar una imagen, en la parte inferior de la ventana de escribir un mensaje, debajo de los botones de "guardar borrador","vista previa" y "enviar", verás que hay dos pestañas ("opciones" y "adjuntos"). Si vas a la de adjuntos, tienes un botón "añadir archivos", que te abrirá una ventana para carga la imagen. Una vez cargada, te aparecerá junto al nombre del archivo, un botón para insertarla en el texto por si la quieres colocar en algún lugar específico del mensaje. Si no lo usas, la imagen irá al final del mensaje.

Captura de pantalla 2018-10-08 08.59.24.png
Sveinbjorn El Rojo

oliviergil80
Nivel 1
Mensajes: 9
Registrado: Dom Oct 07, 2018 10:33 pm

Re: Cómo añadir registros en estructuras de árbol

Mensajepor oliviergil80 » Mar Oct 09, 2018 11:45 am

Jejeje vale OK, sabía yo que esto era un poco lioso :lol:

Lo primero muchas gracias por tu respuesta Sveinbjorn.

Ahí abajo va la ventana de relaciones, la BD no es tan escueta como la resumí pero sí que sigue la estructura de árbol comentada.

Lo primero es decir que la BD se quiere usar para sacar estadísticas, principalmente filtrar y agregar los resultados de los eventos (= los registros de la tabla "capturas") en función del sitio, de la técnica, etc.

Hay 2 tipos de tablas en la BD: las 4 tablas rodeadas de rojo describen las características de eventos únicos (por eso tienen campos de comentarios, que cambian para cada evento), mientras que todas las demás tablas son como catálogos, con datos que se usan en distintas combinaciones para cada evento.

Si hubiera usado una única tabla en lugar de esta estructura de árbol, cada uno de los registros de esa tabla única coincidiría con los registros de la tabla "capturas", pero se repetirían muchos datos de los campos de las tablas aguas arriba, ya que como decía se va de lo más general a lo más específico. Es decir, el evento (id_salida) es el mismo para muchas capturas, la combinación de evento, sitio y persona (id_ssp) también aunque para un número algo menor de capturas, y así sucesivamente.

Tooootal... que me lío :lol: ... asumiendo que la BD está bien construida así como está, ¿cómo hacer un formulario único que permita registrar un evento nuevo en la base de datos con todos sus datos asociados aguas abajo (es decir, tablas "salidas", "ssp", "ssptc" y "capturas")?

Muchas gracias por adelantado!
Un saludo,
Oli
Adjuntos
BD2.jpg

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

Re: Cómo añadir registros en estructuras de árbol

Mensajepor Sveinbjorn » Mar Oct 09, 2018 2:11 pm

No sé si es lo que buscas, pero lo mejor que se me ocurre es un formulario con subformularios sucesivos.

Básicamente se trataría de hacer, de abajo a arriba, un formulario para la tabla capturas (en mi opinión queda más bonito si lo haces tabular u hoja de datos).
Luego haces un formulario para la tabla ssptc, y le insertas como subformulario el anterior, vinculándolos por id_ssptc.
A continuación haces otro formulario para la tabla ssp, le insertas como subformulario el de la tabla ssptc, vinculándolos por id_ssp.
Y por último, haces un formulario para salidas, le añades como subformulario el de ssp, y los vinculas por id_salida.
De esta forma manejas en un solo sitio toda la información de las 4 tablas.

Puedes ver un ejemplo práctico (con 3 tablas) en el reto anterior: viewtopic.php?f=17&t=1148
Sveinbjorn El Rojo

oliviergil80
Nivel 1
Mensajes: 9
Registrado: Dom Oct 07, 2018 10:33 pm

Re: Cómo añadir registros en estructuras de árbol

Mensajepor oliviergil80 » Mar Oct 09, 2018 11:02 pm

Muchas gracias Sveinbjorn, he estado haciendo pruebas con subformularios sucesivos y aunque de momento no son 100% satisfactorias se acercan bastante... creo que tu propuesta es buena ;)
Con algo más de trabajo seguramente llegue a algo que me sirva, aunque igual algún día de estos vuelvo con alguna dudilla más sobre el tema..
Lo dicho, muchísimas gracias!
Un saludo,
Oli

oliviergil80
Nivel 1
Mensajes: 9
Registrado: Dom Oct 07, 2018 10:33 pm

Re: Cómo añadir registros en estructuras de árbol

Mensajepor oliviergil80 » Dom Oct 14, 2018 10:08 pm

Hola de nuevo,

Como he dicho en otro hilo, el formulario con sus subformularios va bien, pero hay un detalle que lo hace poco "user-friendly"...
A ver si tiene solución o tengo que vivir con él :D

La idea de hacer este formulario compuesto era poder visualizar simultáneamente (y editar) los registros de todas las tablas por debajo de una salida concreta. Al haber 4 formularios encadenados (salidas -> ssp -> ssptc -> capturas) el formato más cómodo para esto es poner los datos propios de la tabla salida en modo formulario normal ("único formulario") mientras que los datos de todos los subformularios están en modo "hoja de datos". De esta forma al expandirlo todo (con los cuadritos del signo +) tengo el árbol completo de datos bajo una salida determinada. Lo incómodo de esto es que a cada vez que paso de un registro de salida a otro, por defecto está el 1er subformulario ssp minimizado y tengo que ir cuadrito por cuadrito a expandir todos campos hacia abajo... ¿Hay alguna forma de que se vea todo expandido por defecto, hasta los registros del último subformulario (el de "capturas")?

Gracias de antemano.
Un saludo.

oliviergil80
Nivel 1
Mensajes: 9
Registrado: Dom Oct 07, 2018 10:33 pm

Re: Cómo añadir registros en estructuras de árbol

Mensajepor oliviergil80 » Lun Oct 15, 2018 10:33 pm

Me respondo a mí mismo puesto que he encontrado la respuesta a mi pregunta investigando y probando :D
Para hacer lo que quería basta con ir a todos los subformularios y en la Hoja de propiedades/Formato/Hoja secundaria de datos expandida seleccionar "sí".
Y ya está, como diría Sveinbjorn.


Volver a “Objetos Access”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado