You are on page 1of 19

Oracle Developer Build Forms 1 SW-ORA-20110125

Repuestas a Práctica del Capítulo 19


Revisión: 1
Fecha: 25/01/2011

Oracle Developer Build Forms 1


Respuestas a Práctica del Capítulo 19
1. Introducción a la Práctica del Capítulo 19:

Esta práctica cubre los tópicos siguientes:


• Ejecución de una consulta en el inicio de la ejecución de un formulario
• Completando la imagen del producto cuando el cursor llega a un registro-fila
del bloque de datos “S_ITEM”

En esta práctica, usa el disparador de instancia nueva “WHEN-NEW-“Object””


para completar el item “PRODUCT_IMAGE” cuando el operador navega entre los
registros-filas del formulario “ORDG01”.
También, proporciona un disparador para efectuar automáticamente una consulta al
inicio de la ejecución del formulario.
• Ejecutando la consulta al inicio
• Completando las imágenes de los productos cuando el cursor llega sobre
cada registro-fila del bloque de datos “S_ITEM”

2. Proceso: Práctica del Capítulo 19

2.1. Escriba un disparador de instancia nueva


“WHEN-NEW-FORM-INSTANCE” en el formulario “ORDG01” para ejecutar
una consulta al inicio de la ejecución.
Use el procedimiento incorporado “EXECUTE_QUERY”.

1/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

Respuesta 1:

En Windows 7 Ultimate 32 Bits, click en:


“Inicio → Todos los programas → Oracle Forms 6i → Form Builder”

2.1 - “Oracle Forms Builder” - ORDG01.fmb


1

Seleccionar “Open an existing form” y click en [ OK ]

2/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.1 - “Oracle Forms Builder” - ORDG01.fmb


2

Seleccionar el archivo de módulo de formulario “ORDG01.fmb” y click en [ Abrir ]

3/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.1 - “Oracle Forms Builder” - ORDG01.fmb


3

Click en “File → Connect...”


Ingresar el “User Name”, “Password”, “Database” y click en [ Connect ]

4/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.1 - “Oracle Forms Builder” - ORDG01.fmb


4

Seleccionar el nodo “Triggers” correspondiente al formulario “ORDERS” y click en “Create”

5/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.1 - “Oracle Forms Builder” - ORDG01.fmb


5

Seleccionar el disparador de instancia nueva “WHEN-NEW-FORM-INSTANCE” y click en


[ OK ]

6/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.1 - “Oracle Forms Builder” - ORDG01.fmb


6

En el Editor PL/SQL escribir la sentencia:



EXECUTE_QUERY;

Cerrar el Editor PL/SQL

2.2. Escriba un disparador que se activa cuando el cursor llega sobre cada
registro-fila del bloque de datos “S_ITEM”, y completa el item
“PRODUCT_IMAGE” con una imagen del producto, si no existe una. Use la
función “GET_PRODUCT_IMAGE” para este propósito.
“GET_PRODUCT_IMAGE” es una función que ya está creada. Esta función
retorna el nombre del archivo de la imagen, para un número de producto dado.
Si el archivo no se encuentra, la función retorna “No file”.

7/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

FUNCTION get_product_image (product_number IN NUMBER) RETURN VARCHAR2 IS


v_filename VARCHAR2(20);
BEGIN
SELECT s_image.filename
INTO v_filename
FROM s_image, s_product
WHERE s_image.id = s_product.image_id
AND s_product.id = product_number;
IF v_filename IS NULL THEN
v_filename := 'No file';
END IF;
RETURN v_filename;
EXCEPTION
WHEN no_data_found THEN return('No file');
END;

Si la función retorna un nombre de archivo usable, el disparador debería pasar


este nombre a la función incorporada “READ_IMAGE_FILE”.

Respuesta 2:

2.2 - “Oracle Forms Builder” - ORDG01.fmb


1

En el Navegador de Objetos seleccionar el nodo “Program Units” y click en “Create”


Renombrar el item como “GET_PRODUCT_IMAGE”

8/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.2 - “Oracle Forms Builder” - ORDG01.fmb


2

Seleccionar el tipo “Function” y click en [ OK ]

9/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.2 - “Oracle Forms Builder” - ORDG01.fmb


3

En el Editor PL/SQL escribir las sentencias de la función:



FUNCTION get_product_image (product_number IN NUMBER) RETURN VARCHAR2 IS
v_filename VARCHAR2(20);
BEGIN
SELECT s_image.filename
INTO v_filename
FROM s_image, s_product
WHERE s_image.id = s_product.image_id
AND s_product.id = product_number;
IF v_filename IS NULL THEN
v_filename := 'No file';
END IF;
RETURN v_filename;
EXCEPTION
WHEN no_data_found THEN return('No file');
END;

Cerrar el Editor PL/SQL

10/
10/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.2 - “Oracle Forms Builder” - ORDG01.fmb


4

En el Navegador de Objetos seleccionar el nodo “Triggers” correspondiente al nodo del item


“S_ITEM” y click en “Create”

11/
11/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.2 - “Oracle Forms Builder” - ORDG01.fmb


5

Seleccionar el disparador de registro-fila nuevo “WHEN-NEW-RECORD-INSTANCE” y click


en [ OK ]

12/
12/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.2 - “Oracle Forms Builder” - ORDG01.fmb


6

En el Editor PL/SQL escribir la sentencia para el disparador de registro-fila nuevo:



DECLARE
filename VARCHAR2(20);
BEGIN
filename := GET_PRODUCT_IMAGE(:S_ITEM.PRODUCT_ID);
IF filename = 'No file' THEN
NULL;
ELSE
READ_IMAGE_FILE(filename, 'tiff', 'S_ITEM.PRODUCT_IMAGE');
END IF;
END;

Cerrar el Editor PL/SQL

2.3. Defina el mismo tipo y código de disparador sobre el bloque de datos


“S_ORD”.
Este mostrará la imagen para el primer línea de item de producto si el operador
cambia el orden mostrado.

13/
13/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

Respuesta 3:

2.3 - “Oracle Forms Builder” - ORDG01.fmb


1

Seleccionar el nodo “Triggers” correspondiente al bloque de datos “S_ORD” y click en


“Create”

14/
14/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.3 - “Oracle Forms Builder” - ORDG01.fmb


2

Seleccionar el disparador de registro-fila nuevo “WHEN-NEW-RECORD-INSTANCE” y click


en [ OK ]

15/
15/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.3 - “Oracle Forms Builder” - ORDG01.fmb


3

En el Editor PL/SQL escribir las sentencias:



DECLARE
filename VARCHAR2(20);
BEGIN
filename := GET_PRODUCT_IMAGE(:S_ITEM.PRODUCT_ID);
IF filename = 'No file' THEN
NULL;
ELSE
READ_IMAGE_FILE(filename, 'tiff', 'S_ITEM.PRODUCT_IMAGE');
END IF;
END;

Cerrar el Editor PL/SQL

2.4. ¿Hay otro disparador en dónde podría ubicar este código PL/SQL?

Respuesta 4:

Este código PL/SQL se podría incluir en el disparador “WHEN-VALIDATE-


ITEM” del item “S_ITEM.PRODUCT_ID”.

16/
16/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.5. Guarde, compile y ejecute el formulario para testear los cambios.

Respuesta 5:

2.5 - “Oracle Forms Builder” - ORDG01.fmb


1

En el Navegador de Objetos click en “Save”, luego en “Run Form Client/Server”


Se observan errores de compilación, debido a que la Tabla “S_ITEM” no posee una columna
llamada “filename”. Así que se procede a crear mediante la siguiente sentencia SQL:

SQL> ALTER TABLE S_IMAGE
ADD ( FILENAME VARCHAR2(254) );

17/
17/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

2.5 - “Oracle Forms Builder” - ORDG01.fmb


2

Nuevamente click en “Run Form Client/Server”


Luego cerrar el entorno de tiempo de ejecución
Cerrar el archivo de módulo de formulario
Desconectar de la Base de Datos
Salir del Constructor de Formularios de Oracle

18/
18/19
Oracle Developer Build Forms 1 SW-ORA-20110125
Repuestas a Práctica del Capítulo 19
Revisión: 1
Fecha: 25/01/2011

3. Referencias:

Item Referencia y URL


1 Oracle Developer: Build Forms 1
Volume 2 – Instructor Guide
43112GC10
Production 1.0
April 1999
M08605

Historia de Cambios

Revisión Autor Fecha Descripción


Ezequiel Hernán
1 25/01/2011 Creación del documento.
Villanueva

19/
19/19

You might also like