Subformulario para una relación muchos a muchos

Discute sobre las herramientas de la base de datos
Responder
Trempat
Mensajes: 5
Registrado: Mar Oct 02, 2018 7:44 pm

Subformulario para una relación muchos a muchos

Mensaje 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.
LibreOffice 6.0.2.1 en Windows 10 Home
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Subformulario para una relación muchos a muchos

Mensaje por RMG »

Hola,

Aquí tienes como hacerlo.

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

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Trempat
Mensajes: 5
Registrado: Mar Oct 02, 2018 7:44 pm

Re: Subformulario para una relación muchos a muchos

Mensaje por Trempat »

Aquí està el fichero de ejemplo.
Gràcias por el apunte!
Prueba.zip
(15.79 KiB) Descargado 182 veces
LibreOffice 6.0.2.1 en Windows 10 Home
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Subformulario para una relación muchos a muchos

Mensaje 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.
Adjuntos
Prueba reformada.7z
(17.54 KiB) Descargado 213 veces
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Trempat
Mensajes: 5
Registrado: Mar Oct 02, 2018 7:44 pm

Re: Subformulario para una relación muchos a muchos

Mensaje 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.
LibreOffice 6.0.2.1 en Windows 10 Home
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Subformulario para una relación muchos a muchos

Mensaje 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! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Responder