Creación de formulario con subformularios en OpenOffice Base
En este apartado vamos a crear un formulario que permita relacionar los intérpretes con las películas en las que ha participado y al que llamaremos Form_Protagonistas.
Para comenzar, seguimos los pasos iniciales que vimos en la unidad anterior. Así, primero seleccionamos “Crear un nuevo formulario en vista Diseño…”, luego abrir el “Navegador de formularios” y, por último, crear un nuevo formulario llamado Form_Protagonistas asociado a la tabla Protagonistas (ver Figura 8.14).
Como sabemos, la tabla Protagonistas sólo contiene los identificadores de los intérpretes y los identificadores de las películas que están relacionadas. Por tanto, sería un poco complicado, al utilizar este formulario, tener que recordar el identificador de cada uno en el momento de ver los protagonistas o insertar nuevas interpretaciones.
Para solucionar esto nos vamos a valer de nuevo de los cuadros de lista para poder ver el título de las películas y los apellidos y el nombre de cada interpretación en lugar de simplemente los identificadores.
Vamos a empezar introduciendo en nuestro formulario el título de las películas; para ello, seleccionamos un nuevo cuadro de lista, donde debemos indicar que el contenido es el de la tabla Peliculas, que el campo que queremos que se muestre es el título y que las tablas Peliculas e Interpretes tienen en común el campo Id_pelicula y Pelicula, respectivamente. Junto con este cuadro debemos incluir una etiqueta delante llamada Título.
Debajo del título vamos a incluir el nombre y apellidos de los intérpretes. Debido a que son dos campos diferentes, necesitamos dos cuadros de lista distintos, uno para el campo Nombre y otro para el campo Apellidos, y en ambos casos se utilizarán los campos Id_Interprete de Interpretes e Interprete de Protagonistas como enlace entre ambas tablas. Si además activamos el Navegador de formulario, Form_Protagonistas debe verse como en la Figura 8.15.
En ejecución, podemos ver que este formulario (ver Figura 8.16) nos muestra y nos permite insertar las distintas interpretaciones de una forma mucho más amigable que a través de la tabla Protagonistas directamente.
Vamos a hacer aún más intuitivo este formulario haciendo que, cada vez que nos movemos entre los distintos registros, nos muestre todos los intérpretes asociados a esa película y todas las películas del intérprete seleccionado. Para ello, vamos a necesitar utilizar subformularios, que no son más que formularios construidos sobre otras tablas o consultas distintas a la asociada al formulario principal.
Vamos a empezar creando un subformulario que nos muestre todos los intérpretes de la película seleccionada. Para empezar, abrimos el navegador de formulario y teniendo seleccionado Form_Protagonistas le indicamos que queremos crear un nuevo formulario llamado Subform_Interpretes (ver Figura 8.17).
A continuación, en las pestaña “Datos” de las propiedades del subformulario debemos indicar varias opciones. Primero, en “Tipo de contenido” vamos a poner “Consulta” y en “Contenido” indicaremos la consulta ConsultaTotal (ver Figura 8.18) que creamos en la unidad 6. ¿Por qué utilizamos esta consulta en lugar de la tabla Interpretes? Porque dada la película seleccionada en Form_Protagonistas se quiere ver todos sus intérpretes; es decir, se necesita “algo” que contenga tanto la información de las películas como la de los intérpretes de una sola vez y dicha información sólo la tiene la consulta ConsultaTotal.
Con esto no hemos terminado, sino que tenemos que indicar el vínculo que existe entre el formulario principal y el subfomulario creado. Para ello, sin salir de la pestaña “Datos”, nos vamos a cualquiera de los iconos en forma de puntos suspensivos que aparece a la derecha de las opciones “Vinculación de …” o “Vinculación con …” y hacemos clic con el ratón. Se nos despliega una ventana como la de la Figura 8.19 donde debemos indicar por qué campos vamos a relacionar ambos formularios.
Nosotros queremos conseguir que, dada una película seleccionada en el formulario principal, se muestren sus intérpretes en un subformulario. Es decir, si, por ejemplo, tenemos seleccionada la película “La Comunidad del Anillo”, cuyo identificador es el valor “5″, entonces, sólo nos interesarán aquellos intérpretes de ConsultaTotal cuyo valor para Id_pelicula sea “5″ (”Viggo Mortensen” y “Liv Tyler”), lo que podemos obtener vinculando ambos formularios utilizando el campo Pelicula de Protagonistas junto con el campo Id_pelicula de ConsultaTotal. De esta manera, en el subformulario sólo aparecerán aquellas filas de ConsultaTotal cuyo valor para Id_pelicula sea el mismo que el valor Pelicula en Protagonistas.
Ahora sólo nos falta elegir un campo de control que permita mostrar en el subformulario los datos que queramos de los intérpretes. El más adecuado para mostrar toda la información de una vez es el campo “Control de tablas”. Lo seleccionamos y lo incluimos en nuestro formulario, de forma que nos aparece un asistente (ver Figura 8.20) donde podemos elegir los campos de ConsultaTotal que queremos que se muestren, en este caso, Apellidos, Nombre y Nacionalidad.
Si añadimos una etiqueta descriptiva al subformulario y lanzamos el formulario deberíamos ver algo parecido a lo que muestra la Figura 8.21.
Para finalizar, vamos a añadir un segundo subformulario que permita que se muestren las películas en las que aparece el intérprete que figura en el formulario principal.
Como para el primer subformulario, de nuevo abrimos el navegador de formulario y teniendo seleccionado Form_Protagonistas le indicamos que queremos crear un nuevo formulario llamado Subform_Peliculas.
Ahora, en las pestaña “Datos” de las propiedades del subformulario, volvemos a indicar en el tipo de contenido la opción “Consulta” y en contenido indicaremos la consulta ConsultaTotal, pero ahora el vínculo entre ambos formulario lo vamos a establecer entre el campo Interprete de Protagonistas junto con el campo Id_interprete de ConsultaTotal (ver Figura 8.22). Es decir, en este subformulario sólo queremos que aparezcan aquellas filas de ConsultaTotal cuyo valor para Id_interprete sea el mismo que el valor Interprete en Protagonistas.
También esta vez, para mostrar las películas del intérprete seleccionado, vamos a incluir un campo “Control de Tabla” en el nuevo subformulario con los campos Titulo, Director, Año, Formato, Visionada y NombreGenero (ver Figura 8.23).
Para terminar, añadimos la etiqueta que describe el subformulario y una vez lanzado el formulario que acabamos de construir debería ser parecido al de la Figura.8.24.