• No se han encontrado resultados

Creación de formularios Maestro-Detalle

3.4. Developer 2000

3.4.3. Diseño de un formulario con Form Builder

3.4.3.4. Creación de formularios Maestro-Detalle

Figura 3.35. Especificación de un predicado WHERE junto con una cláusula de ordenación.

Un formulario no vale exclusivamente para la visualización de datos y ejecución de consultas, sino que también se utilizan para la modificación de la base de datos. Por tanto, las operaciones de inserción, modificación y eliminación de SQL se pueden hacer de una forma más intuitiva a través de la interfaz de un formulario.

Antes de pasar a ver cómo se realizan estas tres operaciones, decir que los cambios que se realicen tienen carácter temporal, y que sólo se hacen persistentes (se guardan realmente en la base de datos) cuando se pulse el botón Save de la barra de herramientas, o bien seleccione Action|Save. Si lo que desea es cancelar los cambios, seleccione Action|Clear All.

Para insertar un registro, basta con situarse sobre un registro en blanco (el siguiente al último), o bien pulsar el botón Insert Record de la barra de herramientas, o bien seleccionar Record|Insert. A continuación, inserte los valores que desee en los campos correspondientes.

Para eliminar un registro, primero deberá situarse sobre el registro que desea eliminar (p.e. realizando una consulta) y luego pulse el botón Remove Record, o bien seleccione Record|Remove.

Para actualizar un registro, sólo tendrá que situarse sobre el registro que desee modificar (p.e. haciendo una consulta) y realizar las modificaciones necesarias.

maestro puede ser maestro de formularios detalle, tal y como se ilustra en la figura siguiente.

Figura 3.36. Relaciones Maestro-Detalle.

Una vez introducida la idea de formularios Maestro-Detalle, veamos cómo podemos realizar esto con Form Builder.

Para ello necesitaremos haber definido el bloque maestro, que en nuestro caso nos basta con la definición del bloque de datos DEPT que definimos anteriormente. A continuación crearemos un nuevo bloque de datos para la parte detalle utilizando el Asistente para Bloques de datos.

En el cuadro de diálogo en el que hay que seleccionar el origen de los datos, seleccionaremos la tabla EMP, y en el cuadro Database Items incluiremos todos los campos de la tabla. A continuación, en el cuadro de diálogo siguiente marcaremos la casilla de verificación Auto-join data blocks, para que una vez seleccionado el bloque maestro, realice la conexión de la parte detalle con la parte maestro a través de la clave externa. Ahora pulsaremos el botón Create Relationship y en el cuadro de diálogo que aparece, seleccionaremos la tabla DEPT (a la que hace referencia la clave externa de EMP), y veremos que el cuadro de Join condition se rellena automáticamente con la condición de producto natural, quedando como la figura siguiente.

Figura 3.37. Creación de una relación Maestro-Detalle.

Una vez finalizada la creación del bloque de datos, falta crear el diseño de su presentación, y a continuación detallamos los pasos que vamos a seguir.

El primer paso importante es elegir si queremos presentar nuestro detalle junto a la parte maestro (en el mismo canvas), o lo queremos presentar en un cuadro aparte (en otro canvas nuevo). Nosotros elegiremos el mismo canvas que es la forma más común.

En el paso siguiente, nos aseguraremos que el bloque de datos seleccionado es el de EMP, y a continuación pasaremos al cuadro de Displayed Items todos los campos excepto NUMDEP, puesto que ya aparece en la parte maestro, de forma que nuestro cuadro de diálogo quedaría así.

Figura 3.38. Definición de los campos a presentar en la parte detalle.

El paso siguiente se utiliza para modificar el tamaño de los cuadros de texto, que dejaremos con los valores por omisión, y en el cuadro de diálogo siguiente podemos elegir si la parte detalle se presenta en formato de formulario (ficha por cada detalle), o bien en formato tabular. Nosotros elegiremos el formato tabular que es el más común para formularios Maestro-Detalle, ya que permite ver varios registros de detalle por cada registro del maestro.

A continuación, el asistente muestra un cuadro de diálogo para que introduzcamos el nombre que deseamos que aparezca en la parte detalle, el número de registros que queremos ver simultáneamente en la parte detalle, y si deseamos presentar una barra de desplazamiento para poder ver registros que no quepan en el área definida.

En nuestro caso, elegiremos como título Empleados, como número de registros presentados 5, y además presentaremos la barra de desplazamiento.

Una vez que haya finalizado el diseño del formulario Maestro-Detalle, podrá modificar su diseño, y el resultado final deberá ser similar al que se muestra en la figura siguiente.

Figura 3.39. Formulario Maestro-Detalle.

Al crear una relación Maestro-Detalle entre dos bloques de datos, se crea un objeto Relation en el bloque de datos que actúa como maestro. Las propiedades más importantes de este objeto son:

Detail Data Block: Indica cuál es el bloque de datos que actuará como detalle.

Join Condition: Indica la condición de producto natural entre los bloques de datos.

Delete Record Behavior: Especifica cómo afecta al detalle la eliminación de un registro del bloque de datos maestro.

o Non-Isolated: Previene la eliminación de un registro maestro si hay registros detalle.

o Isolated: Permite la eliminación de registros del bloque maestro sin afectar a los registro del detalle.

o Cascading: Realiza una eliminación en cascada de los registros del bloque de datos del detalle al eliminar un registro del bloque de datos maestro. En una relación maestro-detalle de varios niveles, las eliminaciones no se propagan de forma automática.

Prevent Masterless Operations: Previene la inserción de registros en el detalle si no hay registros relacionados en el maestro. Además, impide que se realicen consultas sobre el detalle sin especificar condiciones en el maestro, debido a las relaciones M:N.

Para crear nuevas relaciones maestro-detalle, basta con repetir la creación del bloque detalle desde el principio, teniendo en cuenta que el bloque maestro siempre tendrá que estar creado previamente.

Documento similar