Tutorial de Oracle Forms Developer
Tutorial de Oracle Forms Developer
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
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
2.1
2.2
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
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
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:
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
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.
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)
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)
PASO 5(b)
5 (b).1
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:
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.
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
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
Valores iniciales
Permita que el cliente seleccione un tipo de pago: efectivo o crédito, siendo el efectivo el
opción predeterminada.
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
6(a).4
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
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
:
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.
6(c).1
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 :
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
NOTA
Paso 6(d)
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"
6(d).1
Seleccione "Bloque de Datos" en el NAVEGADOR DE OBJETOS y presione el botón "+" para agregar un
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".
6(d).7
6(d).8
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
6(e).1
Seleccione 'LOVs' en el NAVEGADOR DE OBJETOS y haga clic en el '+'. Elija construir un LOV
6(e).2
Seleccione "Nuevo grupo de registros basado en una consulta" y haga clic en "SIGUIENTE". La siguiente pantalla mostrará
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
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
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
6(e).10
declarar
lov_return boolean;
begin
lov_return := mostrar_lov('lista_de_clientes');
fin;
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
:s_ord.total6(f)
Generación automática de claves primarias
Primera Etapa
6(f).1
6(f).2
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
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)
(3.) Descuentos por cantidad según las siguientes reglas comerciales (Descuento)
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
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;
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;
:ctrl_s_ord.discount := :ctrl_s_ord.total*disc;
(Calcular el total general basado en el total del artículo, costos de envío y descuento)
FIN;
6(g).4
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
calcular_detalles_pedido
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
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
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
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
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
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
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
7.9
: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
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
go_block('cust_blk');
ejecutar_consulta;
:cust_blk.id := :ord_blk.customer_id;
This will make sure the customer id in the ord_blk is carried over to cust_blk.
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.
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.
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
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.
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
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.
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.
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.
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.
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.