0% encontró este documento útil (0 votos)
4 vistas49 páginas

Tutorial de Oracle Forms Developer

El documento proporciona instrucciones para crear un formulario básico en Oracle Forms Builder utilizando las tablas de base de datos de muestra S_ORD, S_ITEM, S_CUSTOMER, S_EMP y S_PRODUCT. Describe los pasos para crear bloques de datos para las tablas, establecer relaciones entre las tablas maestras y de detalle, generar diseños para los bloques de datos y agregar un botón con un disparador para enviar datos. El formulario permite la entrada de pedidos de clientes al vincular las tablas de pedidos, artículos y clientes para mostrar y guardar los datos ingresados.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas49 páginas

Tutorial de Oracle Forms Developer

El documento proporciona instrucciones para crear un formulario básico en Oracle Forms Builder utilizando las tablas de base de datos de muestra S_ORD, S_ITEM, S_CUSTOMER, S_EMP y S_PRODUCT. Describe los pasos para crear bloques de datos para las tablas, establecer relaciones entre las tablas maestras y de detalle, generar diseños para los bloques de datos y agregar un botón con un disparador para enviar datos. El formulario permite la entrada de pedidos de clientes al vincular las tablas de pedidos, artículos y clientes para mostrar y guardar los datos ingresados.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tutorial de Oracle Forms Builder

Bienvenido al tutorial de Oracle Forms Developer. El objetivo de este tutorial es permitir


ustedes se familiaricen con el proceso de desarrollo de formularios. Vamos a
creando un formulario con la misma funcionalidad que el formulario de muestra que has visto en
clase.

NOTA:

Por favor, lea el Capítulo 1 de su manual de laboratorio antes de comenzar este tutorial. Abra el
SQL ventana e inicie sesión en su cuenta. Escriba el siguiente comando

select * from tab;

NOTA:

'tab' es una tabla que almacena los nombres de todas las tablas en su cuenta.

Todas las tablas que comienzan con "S_" son parte del esquema de la base de datos. Solo utilizaremos una parte.
de losesquema de base de datospara este tutorial. Esta parte consiste en las siguientes tablas:

. S_ORD
. S_CUSTOMER
. S_ITEM
. S_EMP
. S_PRODUCT

Inicie la instancia de OC4J antes de continuar.

Recuerda GUARDAR tu trabajo a intervalos regulares.

Inicie Oracle Forms Builder. Verá la siguiente pantalla de bienvenida:


Para crear un nuevo formulario, haz clic en 'OK'. Paso 2 El Asistente de Bloque de Datos

2.1

Haga clic en "Siguiente" para salir de la pantalla de bienvenida.

2.2

Seleccione 'Tabla o Vista' y haga clic en 'Siguiente'

NOTE:

"Tabla o Vista" te permite crear bloques de datos basados en una tabla o una vista creada en el
Oracle Database Server.

2.3

Ahora verás el siguiente cuadro de diálogo. Haz clic en "Explorar". Un pequeño "Conectar"
Aparece un cuadro. Ingresa tu información de inicio de sesión y haz clic en "Conectar".
NOTA:

Este paso establece una conexión entre los formularios client which runs on your
máquina y el Servidor Oracle de la Escuela Smith. Si ya está conectado a la
base de datos luego ve al Paso 2.4

2.4

Una vez que te conectes al servidor de base de datos Oracle, verás la siguiente pantalla.
Asegúrate de que las casillas para "Usuario actual" y "Tablas" estén marcadas. Si tú
están creando un bloque de datos basado en una Vista entonces la casilla de verificación 'Vistas' tiene que estar

verificado.

Esto te mostrará la lista de todas las tablas en tu cuenta. Primero crearemos un dato.
bloque basado en la tabla S_ORD. Seleccione esa tabla de la lista y haga clic en "Aceptar"

2.5

Ahora verás todas las columnas de la tabla S_ORD bajo "Columnas Disponibles". Haz clic
el signo ">>" para seleccionarlos todos a "Elementos de la Base de Datos". Haz clic en "Siguiente" para continuar.

2.6
Retendremos el nombre de la tabla 'S_ORD' como el nombre para el nuevo bloque de datos. Haga clic
Siguiente

2.7

Crearemos un diseño más adelante. Selecciona "Solo crear un bloque de datos" y haz clic en Finalizar.

2.8

Se ha creado un nuevo bloque de datos llamado "S_ORD". Ve al navegador de objetos (F3)


para verificar esto. Antes de continuar, guardemos el archivo. Haz clic dos veces (¡no un clic doble!)
en "MÓDULO 1" y cambia el nombre del formulario a "MUESTRA". Guarda el formulario (CTRL
+S). La figura a continuación muestra cómo se bloquea el dato en la ventana del Navegador de Objetos.

NOTA:

Los formularios se guardan como archivos *.fmb en las máquinas locales. Es posible que desee guardarlos en
un disco flexible también.

Cuando dos tablas están vinculadas entre sí por una restricción de clave externa, una de ellas es un
"Maestro" y el otro es la tabla "Detalle". Para entender este concepto, considera
las dos tablas con las que estamos trabajando actualmente: S_ORD (Tabla de Pedidos) y S_ITEM
(Tabla de Artículos). A medida que elER
diagram muestra que hay una relación de Uno a Muchos entre
las dos tablas y el campo ORD_ID en S_ITEM referencia el campo ID en S_ORD.
Thus S_ORD is the Master table and the S_ITEM is the detail table. These two tables
están vinculados por una restricción de clave externa llamada "S_ITEM_ORD_ID_FK". Para
vea los detalles de este tipo de restricción en el siguiente comando en la ventana SQL.
seleccionar * de user_constraints donde constraint_name =
'S_ITEM_ORD_ID_FK';

We will now create a data block for the "Detail" table : S_ITEM Paso 3

La D

3.1

Select "Data blocks" by clicking it once in the object navigator. Then click the '+'
Inicia sesión en la caja de herramientas del Navegador de Objetos a la izquierda.

3.2

"New Data Block" dialogue box appears. Make sure "Use data block wizard is
seleccionado" y presiona "OK" Esto iniciará nuevamente el asistente de bloques de datos.

NOTA:

LOS PASOS 3.3 a 3.6 son los mismos que 2.1 a 2.5 3.3 Haz clic en "Siguiente" para salir de la Bienvenida
Pantalla.3.4 Selecciona "Tabla o Vista" y haz clic en "Siguiente"

3.5

Haz clic en "Examinar". Selecciona "S_ITEM".

3.6

Ahora verás todas las columnas de la tabla S_ITEM bajo 'Columnas Disponibles'.
Haga clic en el signo '>>' para seleccionar todos ellos como 'Elementos de la base de datos'. Haga clic en 'Siguiente' para

proceder.

3.7 Ahora verás un cuadro de diálogo nuevo que tiene dos botones: "Crear
Relación" y "Eliminar Relación". Presiona "Crear Relación" y lo siguiente
aparece la caja :
El asistente de bloque de datos se da cuenta de que el bloque de datos que se está creando se basa en un detalle
tabla. Obtiene esta información de la restricción de clave foránea "S_ITEM_ORD_FK" y
te pide que confirmes lo mismo. Haz clic en "Aceptar". El cuadro de diálogo muestra la clave foránea
relación como la condición de unión.
Haz clic aquípara una presentación rápida para entender el papel de las claves foráneas en un
relational database.

En algunos casos, un bloque de detalles puede tener más de un Bloque Maestro. En tal caso
escenario presiona el botón 'Crear Relación' nuevamente y selecciona el otro extranjero
restricción de clave. El campo "Bloques de Datos Maestros" en el cuadro de diálogo anterior se verá entonces
tengo dos bloques listados. Repite el procedimiento de cada bloque maestro. ¿Qué
¿Qué sucede si primero creo el bloque S_ITEM (detalle) y luego el S_ORD (maestro)?
¿bloquear? En otras palabras, ¿es importante la secuencia en la que se crean los bloques de datos?
Haz clic aquípara encontrar la respuesta. 3.8
Retendremos el nombre de la tabla 'S_ITEM' como el nombre para el nuevo bloque de datos. Haga clic
Siguiente

3.9 Crearemos un diseño más tarde. Selecciona "Solo crear un bloque de datos" y haz clic en Finalizar.
3.10 Se ha creado un nuevo bloque de datos llamado "S_ITEM". Ve al navegador de objetos
(F3) to check this. The OBJECT NAVIGATOR will look like this

NOTA:

. El S_ORD obtiene un elemento de relación llamado "S_ORD_S_ITEM" que documenta


la relación de clave foránea entre los dos bloques. Haga doble clic en el ícono siguiente
la relación y abre la Paleta de Propiedades para verificar la Condición de Unión.
. "ON-PROFUNDIZAR-DETALLES" y "ON-CHECK-ELIMINAR-MAESTRO" son dos disparadores
que el desarrollador de formularios crea automáticamente para facilitar la coordinación entre
bloque de datos relacionado. Para obtener más información sobre este desencadenador, presione Ayuda (CTRL+H).

EJERCICIO
S_CLIENTE. Por favor, tenga en cuenta que S_CLIENTE y S_PEDIDO
tener un Master-D
You should now have three data blocks and two relations items in your forms file.
Por favor, guarda el archivo y continúa. El Navegador de Objetos se ve algo así en
esta etapa.

Ahora comenzaremos a crear el formulario para aceptar los pedidos de los clientes. Este formulario así
debe contener elementos de dos bloques de datos, a saber, S_ORD y S_ITEM. Comencemos
con el bloque S_ORD. Paso 4

El Asistente de Diseño: Creando un Diseño para el Bloque Maestro.


4.1

Right-Click the icon for S_ORD data block in the OBJECT NAVIGATOR. Select "Layout Wizard". This
aparecerá la pantalla de bienvenida. Haz clic en "Siguiente"

4.2

En el siguiente cuadro de diálogo, selecciona "(Nuevo Lienzo)". El menú desplegable de TIPO muestra varios lienzos.
estilos de diseño. En este momento utilizaremos el más simple de todos: Contenido.

Haga clic aquípara la respuesta. 4.3


El siguiente cuadro de diálogo te pide que elijas los elementos del bloque que realmente serán visibles en el
canvas. Seleccione todos presionando el botón ">>". Haga clic en "Siguiente" para continuar.4.4Cambia los nombres
del etiqueta bajo "Prompt". El nombre predeterminado dado al elemento es siempre el nombre de la columna en la base
tabla que puede no ser siempre útil para el usuario final. Deje sin cambios el ancho y la altura. Estos pueden ser
cambiado simplemente estirando los elementos en el lienzo. Haz clic en "Siguiente"

4.6

Escriba en: "DETALLES DEL PEDIDO" en el campo de título del marco. Haga clic en "Siguiente". Haga clic en "Finalizar" en la siguiente página. El
layout wizard will now create a default layout for you. Also in the OBJECT NAVIGATOR under
EN LOS CANVASES encontrarás un nuevo objeto de lienzo con un nombre predeterminado. Haz clic dos veces (no un clic doble) en él.
y renombrarlo a "ORDER_CANVAS". El diseño se verá como se muestra a continuación:

NOTA:Los nombres de los objetos no pueden contener espacios. ORDER CANVAS no es un nombre válido.
Ahora tenemos que añadir un botón que nos permita guardar los datos ingresados en el formulario.
en la tabla respectiva (S_ORD). El formulario resultante tendrá funcionalidad mínima.
Podemos mejorar aún más el formulario personalizándolo. Paso 5 (a)

Agregar un botón de guardar

STEP 5 (a)Placing a button on the canvas. 5(a).1Click the "Push Button" icon on
la barra de herramientas del lienzo (mostrada a continuación) y luego haz clic una vez en el lienzo.

Se creará un nuevo botón pulsador con propiedades predeterminadas. El generador de formularios le dará
un nombre predeterminado como "PUSH_BUTTON14". Puedes arrastrar y colocar el botón en cualquier lugar.
donde en el lienzo.

NOTA:

El botón de presión se coloca automáticamente en el mismo bloque de datos (S_ORD) que los datos
bloque en el lienzo actual.

5(a).2

En el lienzo, haz doble clic en el botón de Push para abrir su PALETTA DE PROPIEDADES.
valor para el campo "LABEL" ingrese "ENVIAR" o "GUARDAR" para indicar la función del
botón.

5(a).3

Intenta ejecutar el [Link] clic aquípara instrucciones sobre cómo ejecutar un formulario. Intenta hacer clic en
el Botón de Presión - no pasa nada. Esto se debe a que aún no hemos informado a Forms
constructor qué hacer una vez que se haga clic en el botón. Esto se logra ingresando código PL/SQL en un
disparador. Por favor, consulte el manual del laboratorio para obtener más información sobre los disparadores. En este
en este momento, es suficiente que sepas que los disparadores son bloques de código que son
ejecutado cuando ocurre un evento particular. En este caso, necesitamos que cierto código sea
se ejecuta cuando se presiona el botón 'Enviar'. Así que usamos lo que se llama un CUANDO-
¡Disparador de BOTÓN-PULSADO! Aquí está cómo se vería el formulario:

NOTA:

The green back ground is the default color for the form. This can be easily changed
usando la barra de herramientas del lienzo, aunque en este momento no nos molestaremos con
tales detalles cosméticos. Paso 5(b)

Creating a WHEN-BUTTON-PRESSED trigger

PASO 5(b)

Asociando algo de código PL/SQL con el botón de acción

5 (b).1

En el ORDER_CANVAS, haz clic derecho en el botón 'Enviar'. Selecciona 'Editor PL/SQL'


desde el menú. Esto mostrará una lista de triggers que pueden estar asociados con el
presionar botón. Selecciona "Cuando-se-presione-botón" de esta lista.
5 (b).2

Una vez que seleccione el disparador, el constructor abrirá una ventana del Editor PL/SQL. Este es
donde ingresas el código PL/SQL que debe ejecutarse cuando se presiona el botón 'Enviar'
presionado. Para guardar información a través de un formulario, utilizamos la siguiente línea de código:

commit_form;

5 (b).3

Compila el código PL/SQL haciendo clic en el primer botón de la barra de herramientas para PL/SQL
Editor.
NOTA:

Deberías recibir un mensaje de "No Modificado - Compilado Exitosamente" como se muestra en el


imagen arriba. Cualquier error generado durante el proceso de compilación se mostrará en
la parte inferior de la ventana del editor.

5 (b).4

Cierra la ventana del Editor PL/SQL y ejecuta el [Link] here para instrucciones de
ejecutando un formulario.

Los datos que ingresamos en este formulario se guardarán en la tabla S_ORD. Tenemos que considerar
las restricciones de clave primaria y clave foránea antes de ingresar datos. La clave primaria
la restricción estipula que cada registro en la tabla S_ORD debe tener un único
clave primaria (ID). También las restricciones de clave externa vinculan la tabla S_ORD a la
tabla S_CUSTOMER y S_EMP.

En resumen, tenemos que:

1.) Selecciona un ID (clave primaria) que no esté en la tabla S_ORD.


2.) Selecciona "ID de Cliente" y "ID de Representante de Ventas" (clave foránea) de S_CLIENTE y
Tablas S_EMP.

Sigue los pasos 5(b).5 y 5(b).6 para hacer esto

5 (b).5

Abre la ventana SQL - Programas >> Oracle Servidor de Aplicaciones >> Aplicación
Desarrollo >> SQL Plus.

5 (b).6

Ejecuta los siguientes comandos. seleccionar id de s_ord;Elige cualquier número que sea
no está en la lista de números devueltos. Esta será nuestra clave primaria ÚNICA para un nuevo
[Link] id de s_cliente;Elige cualquier número de la lista de números
devuelto. Este será nuestro ingreso en el campo 'Id del Cliente'.seleccionar id de s_emp;
Elige cualquier número de la lista de números devueltos. Este será nuestra entrada en el
campo "Id de Representante de Ventas".

NOTA

No podemos esperar que los usuarios del sistema entiendan y hagan las cosas que hicimos en el
paso anterior. Para evitar esto, necesitamos PERSONALIZAR el formulario. Aprenderemos algunos
common types of customizations in later parts of the tutorial.

5 (b).7

Ingrese los datos como se muestra en la imagen de abajo y haga clic en el botón "Enviar".

NOTA

Recibirás el siguiente mensaje en la parte inferior de la ventana del applet:

El formulario que hemos creado no es fácil de usar. En toda posibilidad, el usuario está completamente
ignorante sobre conceptos de bases de datos y estaría más que feliz de mantenerlo así
no podemos esperar que el usuario conozca los detalles de la clave primaria y la clave foránea
las limitaciones discutidas anteriormente. Personalizar el formulario es un proceso muy importante
donde el usuario puede usar el sistema sin preocuparse por los detalles subyacentes
como tipos de datos, tablas, relaciones, restricciones, etc. COMO REGLA, ES MEJOR
HAGA QUE EL USUARIO SELECCIONE DATOS DE UNA LISTA EN LUGAR DE ESCRIBIR DATOS. Por ejemplo, esto
es mejor dejar que el cliente seleccione su estado de residencia de una lista desplegable en lugar de
que él lo ingrese en el formulario. Esto también ayudaría a mantener la uniformidad al no
permitiendo entradas como 'Maryland', 'MARYLAND', 'Mrylaand' donde un simple 'MD' sería
he trabajado. Por supuesto, algunos datos como nombres, direcciones de calles no se prestan
mismos a tal personalización. Paso 6

Personalización
Aquí hay una lista de cosas que podemos cambiar para hacer el formulario más fácil de usar.
friendly:

CAMBIO REQUERIDO

CUSTOMIZATION TYPE

Que la fecha de hoy aparezca automáticamente en el campo FECHA DE PEDIDO

Valores iniciales
Permita que el cliente seleccione un tipo de pago: efectivo o crédito, siendo el efectivo el
opción predeterminada.

Botones de radio Permitir que el usuario coloque un ' en la ORDEN CUMPLIDA


campo una vez que se completa un pedido

Casillas de verificación Creando un Bloque de Control. Importancia de la Base de Datos


elementos de tabla y elementos de tabla no relacionados con la base de datos. Bloques de control / Tabla no de base de datos

Permitir que el cliente seleccione su nombre de una lista y no se preocupe


acerca de su ID de cliente. También muestra el nombre y el número de teléfono de la
cliente en el formulario.

Listas Dinámicas (Lista de Valores /LOVS) Generado automáticamente


Número de pedido y muéstrelo en el campo de ID de pedido después de que se envíe el pedido

Secuencias y Disparadores Calcular automáticamente el total del pedido después de


adding a standard shipping charge (10% of order total) and quantity discounts

Calculated values, Control Loops, Program Units. Paso


6(a)
Establecer Valores Iniciales
6(a).1

Abra la PALETA DE PROPIEDADES para el campo de Fecha de Pedido. Esto se puede hacer mediante un
haga doble clic en el elemento de texto de la fecha de pedido O haga clic derecho en el texto de la fecha de pedido
Elemento y seleccionando "Paleta de Propiedades" en el menú.

6(a).2

La Paleta de Propiedades te permite cambiar todos los aspectos de un elemento en particular. Toma
algo de tiempo para revisar toda la paleta de propiedades del artículo de fecha de pedido antes de
tú procedes.

NOTA:

La columna azul a la izquierda del panel de propiedades contiene los nombres de todos los
campo de propiedad. Los valores para los campos se ingresan a la derecha.

6(a).3

Encuentra el campo de propiedad llamado "VALOR INICIAL" y introduce lo siguiente: $$date$$

6(a).4

Cierra la paleta de propiedades.


Ve al Navegador de Objetos y expande el bloque S_ORD para ver los elementos contenidos.
dentro del bloque. Haz doble clic en el icono "TIPO_DE_PAGO" para mostrar su
PALETTE DE PROPIEDAD.
6(b).2

Haga clic en el menú desplegable para el campo TIPO DE ARTÍCULO y seleccione Grupo de Botones de Opción como el
TIPO DE ARTÍCULO.

6(b).3

Type CASH as the field value for INITIAL VALUE and close the PROPERTY PALETTE.

NOTA:

Setting "CASH" as the initial value for the radio button makes CASH the default
opción.

6(b).4

En la Paleta de Propiedades, expande el elemento "TIPO_DE_PAGO". Haz clic en el "Radio


Campo de "Botón" y presiona el botón verde "+" en la barra de herramientas del navegador de objetos DOS VECES (ya que
tenemos EFECTIVO y CRÉDITO como nuestras opciones). Verás dos botones de opción creados en
el Navegador de Objetos con nombres predeterminados como "BOTÓN_DE_RADIO11" y
"RADIO_BUTTON12". Rename them as "CASH" and "CREDIT".

6(b).5

Abre la PALETA DE PROPIEDADES para el botón de opción 'CASH' haciendo doble clic en él.
icon. Change values of the "Label" and "Radio Button Value" as shown in the picture
debajo
NOTA:

El valor del botón de opción es los datos reales que se guardan en la base de datos.

6(b).6

Repita el Paso 6(b).5 para el Botón de Opción de Crédito. Establezca el Valor del Botón de Opción en CRÉDITO.

6(b).7

Abre ORDER_CANVAS y arrastra los dos botones de opción a un lugar visible. Encontrarás
ambos los botones en la esquina superior izquierda del lienzo.

Al crear las tablas de la base de datos para este proyecto se añadió la siguiente restricción
:

RESTRICCIÓN s_ord_payment_type_ck COMPROBAR (tipo_de_pago en ('EFECTIVO',


CRÉDITO

(¡no es una declaración completa!)

Esto significa que los valores devueltos por los botones de radio pueden ser "EFECTIVO" o
"CRÉDITO". Esta es una restricción codificada. Si en lugar de "EFECTIVO" ingresas "Efectivo" como
el valor del botón de opción, recibirás el siguiente error:
Antes de continuar, ejecuta el formulario y mira los resultados de tu [Link] clic aquípara
instrucciones para ejecutar un formulario.

Creando una casilla de verificación

6(c).1

En el NAVEGADOR DE OBJETOS, haga doble clic en el ícono de "PEDIDO_COMPLETO" para abrirlo.


PALETA DE PROPIEDAD.

6(c).2

Seleccione "CASILLA DE VERIFICACIÓN" como el valor para "Tipo de Artículo". Esto cambia el PEDIDO_COMPLETADO
campo de un ELEMENTO DE TEXTO a una CASILLA DE VERIFICACIÓN.

6(c).3

Bajo las propiedades funcionales del campo ORDER_FILLED hay un campo llamado 'Valor'
when checked" and "Value when unchecked". Insert the following values :

for "Value when checked" : Y

for "Value when unchecked": N


Al crear las tablas de la base de datos para este proyecto, se añadió la siguiente restricción
:

CONSTRAINT s_ord_order_filled_ck CHECK (order_filled in ('S', 'N'))

(¡no es una declaración completa!)

Esto significa que los valores devueltos por la casilla de verificación pueden ser "Y" o "N". Esto es un
restricción codificada

6(c).4

Bajo la "Asignación de casillas de verificación de otros valores" selecciona "NO MARCADO" del menú desplegable
lista desplegable

6(c).5

Establecer el VALOR INICIAL del botón de Pedido Lleno como "N".

NOTA

La paleta de propiedades se ve algo así:

Paso 6(d)

Creando un Bloque de Control y un Elemento de Tabla No Base


Antes de proceder

What is a database table item? What is a non database table item? What is a control
¿bloque? Antes de comenzar a responder estas preguntas, recuerda el procedimiento para crear datos
bloques. Seleccionamos una tabla particular en el esquema de la base de datos y luego seleccionamos el
columnas de esa tabla para ser ÍTEMS en el bloque de datos. Luego usando el DISEÑO
WIZARD colocamos estos artículos en el ORDER_CANVAS. Estos artículos se llaman
Elementos de la tabla de la base de datos

Podríamos necesitar tener otros elementos en el lienzo para hacer el formulario más fácil de usar.
amigable. Un buen ejemplo serían los elementos de texto que usaremos para mostrar al cliente
información en la siguiente etapa de este tutorial. Estos elementos no se basan en ningún
columna particular de las tablas de la base de datos, por lo tanto se les llama 'NON Tabla de Base de Datos'
Elementos". El desarrollador de formularios considera que todos los nuevos elementos son "Elementos de Tabla de Base de Datos"

Esto se puede cambiar abriendo la PALETA DE PROPIEDADES de un elemento y


cambiando el campo "Elemento de Base de Datos" a "NO".

En lugar de cambiar la propiedad de cada elemento agregado al formulario, puedes simplemente


crea un "bloque de datos ficticio" o BLOQUE DE CONTROL y añade estos elementos como texto
cajas, botones, etc. a este bloque de datos.

6(d).1

Seleccione "Bloque de Datos" en el NAVEGADOR DE OBJETOS y presione el botón "+" para agregar un

nuevo bloque de datos.

6(d).3

Selecciona 'Construir bloque de datos manualmente' en el siguiente cuadro de diálogo y haz clic en 'Aceptar'. Puedes
ahora vea un nuevo bloque de datos sin elementos. Renombre el bloque de datos a "CTRL_S_ORD" -
indicando que es un bloque de control para el bloque de datos S_ORD.

6(d).4

Para agregar un nuevo elemento al bloque CTRL_S_ORD, selecciona el nodo ITEMS y presiona el '+'
firma. Esto creará un nuevo elemento de texto con un nombre predeterminado. Renombra el elemento como
"CUST_NAME" - we will use this text item in the next stage of the tutorial (Dynamic
Listas: LOV's).

6(d).5

Repeat Step 6(d).4 to create two more text items : CUST_PHONE and SR_NAME
(Nombre del representante de ventas).

6(d).6
Repite el Paso 6(d).4 para crear dos elementos de texto más: SR_BUTTON y CUST_BUTTON.
Abre la PALETA DE PROPIEDADES para estos dos elementos y cambia el valor del "Elemento
Type" field to "Push Button". Also change the labels of these items to "Select Sales
Rep" and "Select Customer".

The OBJECT NAVIGATOR looks like this.

6(d).7

Para la siguiente parte del tutorial, necesitamos colocar estos elementos en el


ORDENAR_LIENZO. Esto se puede hacer simplemente abriendo la PALETA DE PROPIEDADES para
cada uno de estos elementos y estableciendo el valor del campo "CANVAS" a
PEDIDO_LIENZO

6(d).8

Reorganiza los elementos en el lienzo como se muestra:

Hay dos tipos de listas que podemos usar: Listas Estáticas y Listas Dinámicas. Listas Estáticas
son listas de elementos que no cambian con frecuencia - estos se implementan utilizando simples
cajas desplegables (pide a tu GA que te muestre cómo crear una Lista Estática). Típicamente un
una lista estática sería una lista de todos los estados en los EE. UU., o una lista de semestres para el próximo
un par de años etc.

Las listas dinámicas, por otro lado, se basan en datos en las tablas de la base de datos. Los datos
cambia con frecuencia y los datos más actualizados deben presentarse al usuario
cada vez que él / ella pide ver la lista dinámica. Por ejemplo, una lista de artículos en un
almacén que ha bajado de su nivel de re-orden. Estas listas dinámicas se basan en
Consultas SQL y mostrar los resultados de la consulta cada vez que el usuario llama a la dinámica
lista. Comenzaremos creando una lista dinámica (llamada LOV / Lista de Valores) para todos los
clientes en la base de datos - estos datos están cambiando frecuentemente a medida que llegan nuevos clientes
se añaden y se eliminan clientes antiguos.

Primera Etapa

Creando el LOV utilizando una declaración SELECT.

6(e).1

Seleccione 'LOVs' en el NAVEGADOR DE OBJETOS y haga clic en el '+'. Elija construir un LOV

usando el asistente LOV.

6(e).2

Seleccione "Nuevo grupo de registros basado en una consulta" y haga clic en "SIGUIENTE". La siguiente pantalla mostrará

te pedimos que ingreses la consulta en la que se basa este LOV.

6(e).3

Enter the query shown in the picture below and press "Check Syntax" to ensure that
la consulta es correcta. Haz clic en "Aceptar" y luego en "Siguiente".
Aunque todas las declaraciones SQL terminan con un punto y coma (;), las declaraciones SQL ingresadas en
el asistente LOV no debe ser terminado con un punto y coma (;).

6(e).4

En el siguiente paso, haga clic en " >> " para seleccionar todos los elementos como elementos LOV. Haga clic en "Siguiente" y

verás la siguiente pantalla.

6(e).5

Haz clic en la columna "Valor de retorno" para el campo ID y presiona "Consultar retorno"
Al hacer clic en el botón 'item', verás el siguiente cuadro de diálogo.
6(e).6

Seleccione S_ORD.CUSTOMER_ID como el artículo de devolución. Repita el paso 6(e).5 para especificar la devolución.
elementos para NOMBRE y TELÉFONO como CTRL_S_ORD.CUST_NAME y
CTRL_S_ORD.CUST_PHONE respectivamente. Haga clic en 'SIGUIENTE' cuando haya terminado.

Especificar los valores de retorno para los elementos de LOV es un paso muy importante. Pide a tu GA que
explica qué hace un valor de retorno. Intenta el ejercicio a continuación para encontrar qué son los valores de retorno

elimine el artículo devuelto especificado para CTRL_S_ORD.CUST_PHONE. Haga clic en finalizar y


ejecuta el formulario - observa qué sucede con el campo de teléfono del cliente.

6(e).7

Specify a appropriate title for the LOV: "Select Customer name". This appears on top
del LOV. Mantener otros valores predeterminados - estos se pueden cambiar más tarde.

6(e).8

Haga clic en 'Siguiente' hasta que llegue al final del asistente. Retendremos todos los valores predeterminados.
Haz clic en "Finalizar" en la última pantalla - se creará un nuevo LOV con un nombre predeterminado en
el NAVEGADOR DE OBJETOS. Renombrar el LOV como "CUST_LIST".

NOTA
Crear un LOV es la primera etapa de crear listas dinámicas. A continuación, tenemos que insertar
código para llamar al LOV.

Segunda Etapa

Llamando al LOV. Tenemos que abrir la lista de valores cuando el usuario presiona 'Seleccionar'
Botón "Cliente" en el lienzo. Recuerda nuestra discusión anterior sobre CUANDO-BOTÓN-
DISPARADOR presionado.

6(e).9

Abre ORDER_CANVAS y haz clic derecho en el botón "Seleccionar cliente". Elige


Editor PL/SQL

6(e).10

Elige el disparador CUANDO-BOTÓN-PRESIONADO de la lista e inserta el siguiente código en


el editor de PL/SQL:

declarar
lov_return boolean;
begin
lov_return := mostrar_lov('lista_de_clientes');
fin;

--NOTA: cust_list es el nombre del LOV.

6(e).11

Compila el código y cierra la ventana del editor PL/SQL. Ejecuta el formulario para ver el LOV
en el [Link] clic aquípara instrucciones sobre cómo ejecutar un formulario.

NOTA

Es posible que necesites abrir nuevamente el asistente LOV para modificar los atributos visuales del
LOV.

EJERCICIO
A menudo necesitamos referirnos a datos en un elemento de texto particular. La sintaxis para referirse
a un artículo particular es el siguiente

:block_name.item_name

Por lo tanto, el ítem "TOTAL" bajo el bloque S_ORD se deberá referir a

:s_ord.total6(f)
Generación automática de claves primarias

Primera Etapa

Creando una secuencia

6(f).1

Abre la ventana de SQL*Plus e ingresa la información de inicio de sesión y la cuenta.

6(f).2

Una vez que hayas iniciado sesión, introduce el siguiente comando:

crear secuencia cust_pk iniciar con 1 incrementar en 1;

Segunda Etapa

Llamando a la Secuencia

NOTA

Necesitamos usar unas pocas líneas de código para llamar a la secuencia y decirle que inserte
el nuevo valor de secuencia. Antes de hacer eso, tenemos que decidir cuándo este código debería
¿ser ejecutado? Queremos asegurarnos de que se genere una nueva clave primaria solo cuando
el cliente ha enviado el pedido final. Esto se puede hacer ya sea incorporando
el código en el desencadenador CUANDO-BOTÓN-PRESIONADO del botón "Enviar" o por
utilizando un DISPARADOR DE NIVEL DE BLOQUE llamado desencadenador PRE-INSERT. Este desencadenador se activa justo
antes de que el desarrollador de formularios guarde datos en la tabla. Dado que hemos usado el CUANDO-
El desencadenante BUTTON-PRESSED antes de experimentar con el desencadenante PRE-INSERT.

6(f).3

En el NAVEGADOR DE OBJETOS expande el bloque de datos S_ORD. Encontrarás los "Disparadores"


nodo justo debajo del nombre del bloque de datos. Selecciona el nodo y haz clic en " + " para agregar un

detonador.

6(f).4

Selecciona PRE-INSERT de la lista emergente y haz clic en ACEPTAR. El editor PL/SQL para el
se activará. Usa el siguiente código:seleccionar cust_pk.nextval en
:s_ord.id de dual;El NAVEGADOR DE OBJETOS para el bloque S_ORD se ve
algo como esto:
NOTA

Dual es una tabla ficticia utilizada para completar la parte "From" de una declaración SQL;

6(f).5

Compila el código y cierra la ventana del editor. Ejecuta el formulario para ver cómo auto-
la clave primaria generada funciona. Paso 6(g)

Valores calculados y bucles de control

Antes de proceder, necesitamos añadir tres campos de texto en el bloque de control:


ctrl_s_ord

(1.) Total de todos los artículos en un pedido (Total Inicial)

Costo total de envío al 10% del total (envío)

(3.) Descuentos por cantidad según las siguientes reglas comerciales (Descuento)

. Initial Total < $500 : No Discount


. $500 <= Total Inicial < $1000 : Descuento = 5%
. $1000 <= Total Inicial < $1500 : Descuento = 7%
. $1500 <= Total Inicial < $2000 : Descuento = 10%
. $2000 <= Total Inicial : Descuento = 10% + Envío Gratuito

Crea estos artículos como hemos hecho antes, colócalos en ORDER_CANVAS y


proceda al Paso 1. El NAVEGADOR DE OBJETOS se ve así después de que los elementos de texto han
ha sido creado:
Primera Etapa

Creando una Unidad de Programa

6(g).1

Abre el NAVEGADOR DE OBJETOS y selecciona el nodo UNIDAD DE PROGRAMA y haz clic en '+' para
agregar una unidad de programa. Verás el siguiente cuadro de diálogo. Ingresa el nombre que aparece en
la imagen y haga clic en Aceptar:

6(g).2
Se abrirá automáticamente una ventana de PL/SQL con el siguiente código en ella:

PROCEDIMIENTO calc_order_details ES
INICIO

FIN;

6(g).3

Ingresa el código dado a continuación.

PROCEDIMIENTO calc_order_details ES
tot number;
disc number;
INICIO
:ctrl_S_ord.shipping := :ctrl_s_ord.total * 0.1;
tot := :ctrl_s_ord.total;

si tot < 500 entonces


disc := 0;
elsif tot >= 500 y tot < 1000 entonces
disc := 0.05;
elsif tot >= 1000 y tot <1500 entonces
disc := 0.07;
elsif tot >= 1500 y tot < 2000 entonces
disc := 0.1;
elsif tot >= 2000 entonces
disc := 0.1;
:ctrl_s_ord.shipping := 0;
else
null;
fin si;
:ctrl_s_ord.discount := :ctrl_s_ord.total*disc;
:s_ord.total := :ctrl_s_ord.total + :ctrl_s_ord.shipping -
:ctrl_s_ord.discount;
FIN;

EXPLICACIÓN DEL CÓDIGO :

PROCEDIMIENTO calc_order_details ES
número total;(declara la variable local tot de tipo de dato número)
disc number; (declarar variable local disc de tipo número)
COMENZAR
:ctrl_S_ord.shipping := :ctrl_s_ord.total * 0.1;

Calcule el costo de envío al 10% del total del artículo. La declaración le indica a Forms Builder que
take the data in :ctrl_s_ord.total and multiply it with 0.1 and put the result in
:ctrl_s_ord.envío)

tot := :ctrl_s_ord.total;

(Asignar el total del artículo contenido en :ctrl_s_ord.total a la variable local tot)

si tot < 500 entonces


disco := 0;
elsif tot >= 500 y tot < 1000 entonces
disc := 0.05;
elsif tot >= 1000 y tot < 1500 entonces
disc := 0.07;
elsif tot >= 1500 y tot < 2000 entonces
disc := 0.1;
elsif tot >= 2000 entonces
disc := 0.1;
:ctrl_s_ord.shipping := 0;
else
null;
fin si;

(BUCLE IF-THEN-ELSEIF-ELSE para implementar reglas comerciales. Cada condición se verifica


y se asigna un % de descuento apropiado a la variable local disc

:ctrl_s_ord.discount := :ctrl_s_ord.total*disc;

(Calculando el valor real del descuento)

:s_ord.total := :ctrl_s_ord.total + :ctrl_s_ord.shipping -


:ctrl_s_ord.discount;

(Calcular el total general basado en el total del artículo, costos de envío y descuento)

FIN;

(finalizando el código del procedimiento)

6(g).4

Compila el código y cierra la ventana del editor PL/SQL.

Segunda Etapa
Llamando a la Unidad de Programa

6(g).5

Haz clic derecho en el elemento de texto TOTAL del bloque ctrl_s_ord (denominado como
:ctrl_s_ord.total) y haga clic en el editor PL/SQL para mostrar la lista de posibles
disparadores.

6(g).6

Seleccione un desencadenador WHEN-VALIDATE-ITEM e introduzca el siguiente código:

calcular_detalles_pedido

Esto llama a la unidad del programa y ejecuta el código PL/SQL en ella.

What is validation ? When is the WHEN-VALIDATE-ITEM trigger fired? Haz clic


Aquíaveriguar.

6(g).7

Es posible que desees desactivar el Envío, Descuento y Total General (:s_ord.total) para
que el usuario no puede modificar los valores en estos campos. Esto se puede hacer abriendo
la PALETA DE PROPIEDADES de los artículos y cambiando el valor del campo HABILITADO a
NO.

6(g).8

Ejecuta el formulario para ver los [Link] here para instrucciones sobre cómo ejecutar un formulario.

Las alertas son mecanismos simples para requerir la confirmación del usuario sobre la acción solicitada.
se utilizan para evitar errores cometidos por el usuario. Por ejemplo, cuando solicitas un documento
para ser eliminado, el sistema operativo Windows pregunta si estás seguro - esta es una alerta que
requiere que el usuario confirme su acción. Veremos cómo se pueden incorporar alertas
en formularios.

Agreguemos una alerta al formulario que le pida al usuario confirmar su solicitud para enviar un
order.(A alert has to show up after the user has pressed the "Submit" button.)

Paso 6(h)

Agregar alertas

Primera Etapa
Creando la ALERTA

6(h).1

Seleccione "Alertas" en el NAVEGADOR DE OBJETOS y haga clic en el "+". Una nueva alerta con un

se creará un nombre predeterminado. Cambia el nombre predeterminado a "SAVE_ALERT".

6(h).2

Haga doble clic en el ícono para abrir la PALETA DE PROPIEDADES para la alerta. Cambie el
valores de campo como se muestra en la imagen de abajo.

NOTA

Tu alerta ya está lista para ser utilizada. La siguiente etapa es llamar a la alerta utilizando un PL/SQL
código.

Segunda Etapa

Llamando la alerta

6(h).3

Como queremos que la alerta se llame cuando el usuario presiona el botón 'Enviar', nosotros
tiene que incluir código para la alerta en el disparador CUANDO-BOTÓN-PRESIONADO.

6(h).4

Abre el editor PL/SQL para el evento WHEN-BUTTON-PRESSED asociado con el


Botón de enviar. Esto se puede hacer abriendo ORDER_CANVAS y haciendo clic con el botón derecho en
el botón Enviar. Selecciona "Editor PL/SQL" del menú.

6(h).5
Ya tenemos el siguiente código en este disparador:commit_form; Vamos a modificar el
código en este disparador como se muestra a continuación:

declarar
alert_id alert;
choice number;

INICIO

alert_id := Find_Alert ('SAVE_ALERT');


choice := Show_ALert(alert_id);
SI
choice = ALERT_BUTTON1
ENTONCES

commit_form;

ELSE
null;
FIN SI;
FIN;

Por favor, tenga en cuenta el commit_form; el código ahora se ha colocado DENTRO del If-THEN-
Bucle ELSE.

6(h).3

Compila el código y cierra la ventana del editor PL/SQL. Tu alerta ahora está lista para
ser utilizado. Ejecuta el formulario y observa cómo funciona la [Link] clic aquípara instrucciones para
Ejecutando un formulario. Así es como se ve una alerta después de que se ha presionado el botón Enviar.
Repite el

Actualmente tenemos solo un Bloque de Datos (S_ORD) en el ORDER_CANVAS. El formulario como


un todo aún no está completo, añadiremos S_ITEM al mismo lienzo. Paso 7

Múltiples bloques de datos en el mismo lienzo

Hemos creado un bloque de datos para S_ITEM en las secciones anteriores de este tutorial.
podrías querer repasar esa parte de nuevo antes de seguir adelante. Para repasar el
creación del bloque de datos S_ITEMHaz clic aquí.

7.1
En el NAVEGADOR DE OBJETOS haz clic derecho en el bloque de datos S_ITEM y selecciona DISEÑO
MAGO. Esto mostrará la Pantalla de Bienvenida. Haga clic en SIGUIENTE para continuar

7.2

Dado que queremos que el bloque de datos esté en el mismo lienzo (ORDER_CANVAS), selecciona eso.
lienzo de la lista desplegable y haga clic en SIGUIENTE.

7.3

Verás todos los artículos en el bloque de datos S_ITEM bajo "Artículos Disponibles"
columna. Selecciona todos los artículos EXCEPTO CANTIDAD_ENVIADA a los 'Artículos Mostrados'
columna. Haz clic en NEXT una vez que el cuadro de diálogo se vea así :
No estamos incluyendo LA_CANTIDAD_ENVIADA ya que actualmente está fuera del alcance de la
tutorial. Implica trabajar con la tabla S_INVENTORY que no estaremos utilizando
para el propósito de este tutorial.

7.4

Change the names of the label under "Prompt". The default name given to the item
siempre es el nombre de la columna en la tabla base que puede no ser siempre útil para el
usuario final. Deje sin cambios los anchos y las alturas. Estos se pueden cambiar simplemente
estirando los elementos en el lienzo. Haga clic en "Siguiente"

7.5

Selecciona "TABULAR" como el estilo de diseño y haz clic en SIGUIENTE

NOTA

Sería interesante señalar que el diseño tabular permite una mejor organización de
múltiples elementos. Esto está en línea con el diagrama ER donde tenemos una relación uno-a-muchos.
relación entre las tablas S_ORD y S_ITEM.

7.6

Artículo para el pedido


con una distancia de 3 entre cada registro. Haz clic en SIGUIENTE cuando el cuadro de diálogo se vea
así:
7.7

En la siguiente pantalla, haga clic en 'FINALIZAR' para cerrar el asistente de diseño. ORDER_CANVAS estará
se abrió con el bloque de datos añadido recientemente S_ITEM en él. Así es como se ve:
NOTA

Todos los artículos en el lienzo anterior pertenecen al mismo pedido. Por lo tanto, para satisfacer la extranjera
restricciones clave: :s_item.ORD_ID tiene que ser el mismo que :s_ord.ID. Tendremos que añadir un
línea de código PL/SQL para hacer eso. Tenemos que transferir elgenerado automáticamente
clave primariapara S_ORD a :S_ITEM.ORD_IDBEFORE el generador de formularios inserta el
registros en las tablas de la base de datos.

7.8

Expande el bloque de datos S_ORD en el navegador de objetos. Expande el nodo TRIGGERS


bajo el bloque de datos S_ORD y haga doble clic en el icono para el Trigger PRE-INSERT.
Esto abre el editor PL/SQL con una línea de código que hemos ingresado previamente.

seleccionar cust_pk.nextval en :s_ord.id desde dual;

7.9

Agrega la siguiente línea DESPUÉS de la línea anterior:

:s_item.ord_id := :s_ord.id;

NOTA

La segunda línea de código (PASO 1.9) copiará la clave generada automáticamente en :s_ord.id
a :s_item.[Link].

7.10

Haga doble clic en la columna ORD_ID en el ORDER_CANVAS para abrir la PROPIEDAD


PALETTE. Cambia el valor del campo "Habilitado" a NO.

7.11

Ejecuta el formulario para ver los resultados de tu [Link] clic aquípara instrucciones para ejecutar un
Formulario. Ingrese los datos que se muestran en la imagen de abajo y envíe el pedido:
e entire procedure to create a LOV to select Sales Representative Name
Constructor de formularios Temas avanzados

Cambiar de un lienzo/bloque a otro

Si deseas cambiar de un lienzo a otro, puedes usar el comando


ir_bloque. Por ejemplo, cuando ejecutas [Link], al presionar el botón etiquetado
'Mantenimiento de Clientes' te llevará a un lienzo diferente para el cliente
mantenimiento.

Examina [Link] en el Navegador de Objetos, y encontrarás un botón llamado


mantenimiento_clientes en el bloque de Control. Su activador CUANDO-BOTÓN-PRESIONADO
tiene el siguiente código:

go_block('cust_blk');

El comando go_block('nombre-del-bloque') te lleva a un bloque, que es 'cust_blk' en


este caso. Tenga en cuenta que el botón está asociado con el lienzo ord_can y cust_blk es
asociado con el lienzo cust_can. Por lo tanto, cuando se activa el desencadenador, el
la aplicación cambiará de ord_can a cust_can.

Sin embargo, si solo tienes el comando go_block, te llevará al nuevo lienzo


y nada más. En el [Link], queremos mostrar la información del cliente en
el lienzo del cliente. Por lo tanto, debemos agregar el siguiente código después de go_block
command:

ejecutar_consulta;

Además, agrega un disparador de preconsulta al cust_blk así:

:cust_blk.id := :ord_blk.customer_id;

This will make sure the customer id in the ord_blk is carried over to cust_blk.

Cerrar una ventana

A veces necesitas cerrar una ventana. En el ejemplo anterior, después de hacer clic en el
'Botón de Mantenimiento de Clientes', hay dos ventanas abiertas. Preferimos no tener
más de una ventana abierta al mismo tiempo. Porque múltiples ventanas significan
múltiples bloques de datos, y múltiples bloques de datos suelen causar problemas cuando intentas
guarda el formulario. (Lo explicaremos más tarde.) Ahora, si presionas el botón 'Cerrar', tú
cierra la ventana del cliente y regresa al lienzo ord_can. Examina cust_blk en
el Objeto Navegador, encontrarás el desencadenante CUANDO-BOTÓN-PRESIONADO del 'Cerrar'
el botón tiene el siguiente código:

Close_Win2;
Tenga en cuenta que Win2 está asociado con cust_can. Este comando cerrará Win2, para que
el lienzo y los bloques de datos en él también se cerrarán. Dado que la otra ventana es la
solo abra la ventana en este momento, será llevado automáticamente a ella.

La diferencia entre go_block y close_win: Parece que ambos comandos pueden


te llevará a una ventana diferente. Sin embargo, go_block simplemente cambia entre
ventanas. No cierra nada. En contraste, close_win no puede navegar a un
ventana específica. Te llevará automáticamente a la siguiente ventana disponible.

Agregar gráficos a un formulario

Puedes agregar imágenes gráficas a tu aplicación. Para hacer esto, selecciona un lienzo en el
Navegador de objetos, y haga clic en Editar Importar Imagen. Esto importará en el formulario un
file that contains a graphic image. You can edit its layout in the Layout Editor.

Limpiar los valores en un formulario

Hay dos comandos CLEAR_FORM y CLEAR_BLOCK. Básicamente, CLEAR_FORM


borrará todo el formulario, sin importar a qué bloque de datos pertenezca el botón. En
En contraste, CLEAR_BLOCK solo borrará el bloque de datos al que pertenece el botón.
Por favor, descarga [Link]íy examine los dos botones CLR_FM y
CLR_BLK en el bloque S_ITEM.

Guardar información en un formulario

Cuando queremos crear un botón de GUARDAR para guardar información, usamos lo siguiente
código en el desencadenador CUANDO-BOTÓN-PRESIONADO:

COMMIT_FORM;

Si tu formulario es simple y tiene solo un bloque de datos asociado con una tabla, esto
normalmente funciona correctamente. Sin embargo, si su formulario tiene dos o más bloques de datos o si usted
tiene bloques de datos de múltiples registros correspondientes a múltiples filas de una tabla, entonces el
El comando COMMIT_FORM intentará insertar uno o más tuplas en múltiples tablas
simultáneamente. Dependiendo de la "lógica" de tu aplicación, el formulario puede ofrecer
errores.

Cómo depurar

Si tienes problemas para insertar registros en una tabla utilizando COMMIT_FORM,

(1) Simplifique su aplicación reduciéndola a un bloque de datos y verifique que sea


funciona.
(2) Añadir más bloques de datos al formulario.
(3) Comience insertando nuevos datos en el PRIMER bloque de datos (el que está en la parte superior de
la lista de bloques de datos en el Navegador de Objetos
(4) Evita múltiples botones de GUARDAR y comandos COMMIT_FORM en un mismo formulario.
(5) [Link] cómo funcionan los dos botones de guardar.

¿No se pueden insertar tuplas en una tabla?


Si algunos atributos en una tabla tienen restricciones de NO NULO, insertar un registro que tenga
Los valores NULL para esos atributos generarán errores. La solución es eliminar o bien...
Restricciones NOT NULL en la definición de la tabla o asegúrese de proporcionar un valor
para esos atributos.

Eliminando un registro dentro de un formulario

Crea un botón etiquetado como ELIMINAR y añade un disparador CUANDO_SE_PRESIONE_EL_BOTÓN con el


el siguiente código:

eliminar_registro;
comprometer;

Esto eliminará el registro actual. Sin embargo, si tienes más de un bloque de datos en
the form, it is more complicated. Basically, DELETE_RECORD will delete the current
registra en el bloque de datos al que pertenece el botón. Si tienes una forma tabular, este
eliminará el primer registro por defecto. Y si deseas eliminar otro registro, tú
puede mover el cursor a ese registro y presionar el botón ELIMINAR. Lo más importante,
si tienes una relación maestro-detalle en tu formulario, para eliminar un padre
Registro con registros secundarios, tienes que cambiar la propiedad de la relación. ¿Verdad?
haga clic en la relación (que debería estar bajo el bloque maestro) y seleccione "Propiedad"
Paleta". Cambia el "Comportamiento de Eliminación de Registro" a "Cascada". Ahora deberías estar
capaz de eliminar el registro padre incluso cuando hay registros hijos.

Cómo mostrar mensajes de error

Si obtienes un error al ejecutar un formulario, puedes usar la función de Ayuda para mostrar el
error al hacer clic en Ayuda / Mostrar error en la barra de menú. Esto puede ayudarte a depurar
tu formulario especialmente cuando hay múltiples bloques de datos en el formulario. Por ejemplo,
el error puede ocurrir en otra tabla - no en la que estás intentando
¡Insertar registros en!
Ejercicios para el Creador de Formularios

Ejercicio 1

1. Create a data block called "Employee" based on the S_EMP table.


2. Crea un lienzo llamado "EMP_CANVAS" para mostrar el bloque de datos.
3. START_DATE es un campo en la tabla S_EMP. Inicializa el valor de START_DATE a
ser el actual fecha.
4. Haz que COMMISSION_PCT sea un grupo de botones de radio, y añade cinco botones de radio: 10, 12.5, 15,
17.5, 20 al grupo. Para que el usuario pueda elegir entre estos valores.

Ejercicio 2

Necesitas completar la Parte I del Tutorial del Creador de Formularios para finalizar este ejercicio. Después de que
completar este ejercicio, estarás familiarizado con el bloque de datos, lienzo, bloque de control,
button, initial value, radio button.

1. Descarga y ejecuta el [Link], creará varias tablas. El


La figura a continuación muestra el esquema relacional de estas tablas. También puedes examinar el
tablas en el Navegador de Objetos bajo los Objetos de Base de Datos.

a. Create two data blocks: PROJECT and WORKS_ON. Please make sure that you
se creó una relación maestro-detalle entre estos dos bloques de datos.
b. Crea un lienzo llamado PROJECT_CANVAS para mostrar los dos bloques de datos.
c. Crea un bloque de control. Agrega los siguientes elementos al bloque que no están en el
base table: a text item DEPT_NAME and a "Department" button.
d. Guardar el formulario como [Link], porque lo usarás en otros.
ejercicios.

Ejercicio 3

Este ejercicio utiliza el script [Link] para crear tablas, si no lo has ejecutado ya.
this script from exercise 2 download it aquíLa figura a continuación muestra la relación
esquema de estas tablas.

a. Crear un bloque de datos VISUALIZACIÓN para mostrar la información de visualización y poner el


bloque de datos en el lienzo VISTA_LIENZO.
b. Make the initial value of viewDate be the current date.
c. Crear un bloque de control. Agregar los siguientes elementos al bloque que no están en el
base table: a text item CLIENT_NAME and a "Client" button.
d. Crear otro lienzo llamado CLIENT_CANVAS para gestionar la información de
los clientes. Agrega un bloque de datos llamado CLIENTE a CLIENT_CANVAS.
e. Haz que prefType sea un grupo de botones de opción y agrega dos botones de opción: "Plano" y "Casa"
to the group. So that the user can choose from these two preference types.
Guarde el formulario como [Link], porque lo utilizará en otros
ejercicios.

Exercise 4

Necesitas completar la Parte II del Tutorial de Constructor de Formularios para terminar este ejercicio. El
los objetivos de este ejercicio son: disparador, LOV, secuencia, unidades de programa y calculado
valores, alerta.
1. Los siguientes ejercicios utilizarán [Link], que creaste en el Ejercicio 2.

a. Crea un botón 'Guardar' para guardar información y añade un CUANDO-BOTÓN-


TRIGGER presionado.
b. Add an LOV which is connected to the "Department" button. The values
lo devuelto por el LOV debe ser ingresado en DNUM y DEPT_NAME en el formulario.
c. Make PNUMBER a system generated field after creating a database sequence.
El valor se generará cuando intente insertar un nuevo registro (utilice un PRE-
INSERT trigger). Tenga en cuenta que ya hay valores existentes en la columna, y
asegúrate de que tu secuencia siga la restricción de clave primaria. Dado que este valor
will be auto generated it will no longer be a required field. Go to the Property
Paleta para Pnumber y cambie el campo 'Requerido' a 'No'.
d. Agregar un elemento de texto SALARIO al BLOQUE DE CONTROL. Mover el texto recién agregado
mueva el elemento para que se alinee con otros elementos en el bloque de datos WORKS_ON.
e. Agregar una unidad de programa llamada Get_Wage que calcule el salario basado en el
horas que el empleado trabajó en el proyecto (salario=horas*20).
f. Agrega un trigger POST-QUERY al bloque de datos WORKS_ON que llame al
Get_Wage program unit.
g. Crear una alerta. Asegúrate de que la alerta se llame cuando se presione el botón 'Guardar'.
se presiona y se ofrece la opción de enviar o cancelar.
h. Guarda el formulario.

2. Los siguientes ejercicios utilizarán [Link] que creaste en el Ejercicio 3.


a. Crea un botón de "Guardar" para guardar la información y añade un CUANDO-BOTÓN-
SE PRESIONÓ el disparador en el Lienzo del Cliente.
b. Agregar un LOV que esté conectado al botón "Cliente". El clientNo y el
El apellido del cliente devuelto por el LOV debe ser ingresado en clientNo y
NOMBRE_DEL_CLIENTE en el formulario.

c. Create an alert. Make sure that the alert will be called when the "Save" button
se presiona y se proporciona la opción de enviar o cancelar.
d. Guarda el formulario.

Ejercicio 5

Necesitas completar la Parte III del Tutorial de Creador de Formularios para terminar este ejercicio. El
los objetivos de este ejercicio son: activar, eliminar registros, limpiar formularios, cerrar ventanas,
switch between canvases.

1. Los siguientes ejercicios utilizarán [Link] que actualizaste en el Ejercicio 4.

a. Agregar un botón "Eliminar Proyecto" para borrar la información del proyecto. Asegúrate de
elimina toda la información de trabajos_en relacionada con el proyecto eliminado.
b. Agrega un botón "Eliminar Works_On" para eliminar la información de works_on.
c. Agrega un botón "Limpiar" para limpiar todo el formulario.
d. Crea otro lienzo llamado EMP_CANVAS para gestionar la información de la
empleados. Agregue un bloque de datos llamado EMPLEADO a EMP_CANVAS para mostrar el
información del empleado.
[Link] un botón de 'Gestión de Empleados' a PROJECT_CANVAS, para que cuando el
si el usuario hace clic en este botón, será dirigido a EMP_CANVAS.

2. Los siguientes ejercicios usarán [Link] que actualizaste en el Ejercicio 4.


a. Agrega un botón de "Eliminar Visualización" a VIEW_CANVAS para eliminar la visualización
información.
b. Agrega un botón "Borrar" a VIEW_CANVAS para limpiar todo el formulario.
c. Agregar un botón de "Gestión de Clientes" a VIEW_CANVAS, para que cuando el usuario
haga clic en este botón, será navegado a CLIENT_CANVAS.

También podría gustarte