Página 1 de 1

Subformulario para una relación muchos a muchos

Publicado: Dom Oct 07, 2018 12:46 pm
por Trempat
Buenos días,

Tengo dos tablas (Documentos, Autores) en una relación muchos a muchos, a través de otra tabla puente (TP), que tan solo tiene los identificadores de las dos tablas (IDDocumentos, IdAutores)

Mi intención es crear un formulario, con los datos de cada Documento, y con un subformulario que muestre los autores de ese documento.

El problema me surge cuando, al crear el subformulario, tan solo encuentro la opción de crearlo en modo tabla, con los registros de la tabla puente TP, cuando lo que me interesaria seria un formulario que mostrara los nombres de los autores y que, ademàs, permitiera escoger más autores mediante una lista desplegable, que quedarían relacionados con el Documento del formulario maestro.

Intento adjuntar un fichero con la aplicación de ejemplo, pero no encuentro cómo hacerlo...

Muchas gracias.

Re: Subformulario para una relación muchos a muchos

Publicado: Dom Oct 07, 2018 3:17 pm
por RMG
Hola,

Aquí tienes como hacerlo.

https://forum.openoffice.org/es/forum/viewforum.php?f=3

Saludos

Re: Subformulario para una relación muchos a muchos

Publicado: Dom Oct 07, 2018 6:19 pm
por Trempat
Aquí està el fichero de ejemplo.
Gràcias por el apunte!
Prueba.zip
(15.79 KiB) Descargado 183 veces

Re: Subformulario para una relación muchos a muchos

Publicado: Dom Oct 07, 2018 10:31 pm
por Longi
Buenas!
El uso de las consultas o sentencias SQL como origen de formularios es una práctica áltamente recomendable.
Echa un vistazo.
Entiendo que no es el mejor diseño posible, pero creo que te puede servir para que hagas tus propias investigaciones.

Un saludo! ;)

P.D.: Si clickas en el campo del subformulario ID_Autor, verás que se despliega un listado de valores para escoger (cuadro de lista), y cuando escoges uno, se rellena automáticamente el nombre y los apellidos. (Se puede jugar de otros modos, así que aunque lo hice así, se pueden experimentar otras soluciones)
Puedes hacer otro cuadro de lista para el campo Tipo.
Ah! y si lo que querías es un tipo de subformulario que en Access se llama algo así como formulario contínuo, en base no lo hay, así que toca trabajar con control de tablas.

Re: Subformulario para una relación muchos a muchos

Publicado: Mar Oct 09, 2018 4:18 pm
por Trempat
Buenas!

Es una buena solución, gracias, ya me sirve.

Pero soy nuevo en OO, y no entiendo un par de cosas:

1. Los campos de la consulta y de la tabla de contenido del subformulario son diferentes. Cómo haces eso? Y cómo los campos de la tabla tienen un nombre diferente al de la consulta?

2. Cómo lo haces para colocar un desplegable en IdAutor de la tabla de contenido, y que rellene el resto de campos automaticamente?

Gracias por la ayuda.

Re: Subformulario para una relación muchos a muchos

Publicado: Mar Oct 09, 2018 8:44 pm
por Longi
Vayamos por partes!
1. Las relaciones muchos a muchos me cuesta trabajarlas, y a penas tengo experiencia con ellas.
2. Las cabeceras de las columnas en un control de tablas tienen el nombre que le quieras poner (sería la etiqueta), aunque el origen de datos es el campo de la consulta y se puede llamar de otra manera: La primera columna del control de tablas tiene el título “ID_Doc”, que es lo que aparece en la primera página de propiedades como ‘Etiqueta’, se llama, en el ejemplo que hice ‘Campo numérico 2’, pero en la segunda hoja de propiedades, llamada ‘Datos’, en ‘Campo de datos’ puedes escoger el campo del origen de datos (en este caso la consulta), y hemos escogido ‘ID_Document’.
3. Las consultas tienen el llamado ‘Alias’ que te permite dar el cambiazo con respecto a la tabla. Es muy útil cuando se tienen cálculos como concatenaciones o simlares y que alargan mucho los nombres de los campos, con ello evitamos errores.
4. Con respecto al cuadro de lista: Te colocas en la cabecera de la columna (en modo diseño), botón derecho y vas a ‘Reemplazar por’ y escoges ‘Cuadro de lista’.
Una vez que haces esto, botón derecho, ‘Columna...’ y vas a página de ‘Datos’. Vas a ‘Tipo de contenido de la lista’ y escoges ‘SQL’.
Después vas a ‘Contenido de lista’, picas en el botón con puntos suspensivos y generas el SQL que te interese.
5. Tener en cuenta que los cuadros de lista solo tienen una columna de datos, por lo que tienes que escoger la columna en concreto que quieres que aparezca en el resultado final.
6. El que aparezcan los datos mágicamente no es magia, es simplemente efecto de la propia consulta (no he añadido macros en absoluto)
7. El listado de datos que se ven son todos los de la consulta, pero filtrados por el valor ‘ID_Doc’, que está en el formulario principal y en el subformulario, y que restrige el total de los datos que se muestran.

No sé si me he explicado suficientemente, pero sí que lo he intentado.

Un saludo! ;)