Вы находитесь на странице: 1из 46

¿Qué es Developer/2000?

Es un conjunto de componentes Oracle que se integran para


construir aplicaciones.

Soporta:

« GUI
« Base de datos (ODBC)
« Cliente/Servidor
« World Wide Web
« Object Linking and Embedding (OLE2)
« Dinamic Data Exchange (DDE)
« ActiveX Controls

Build Forms
Componentes de Developer/2000

Project Builder Translation Builder


Form Report Graphics
Builder Builder Builder
Procedure Query Schema
Builder Builder Builder
Database Interface

Build Forms
Componentes y Variables de Ambiente

Componentes Variables de Ambiente

« OBJECT NAVIGATOR «FORMS50_PATH

« PROPERTY PALETTE « REPORTS30_PATH

« LAYOUT EDITOR « GRAPHICS30_PATH

« DESARROLLO PL/SQL « TK25_ICON

« ORACLE_PATH

« REGEDIT.EXE

« Cauprefs.ora (preferencias)

Build Forms
Esquema relacional de ejemplo

s_item s_ord s_customer

s_inventory s_emp

s_product s_warehouse s_dept

s_image s_region

Build Forms
¿Qué es Form Builder?
Es un componente de Developer/2000 que permite desarrollar
rápidamente aplicaciones basadas en formas, para presentar y
manipular datos.
F50RUN32 MODULE=summit USERID= usrdev12/lania
Incluye tres componentes ejecutables.

Form Builder
.FMB

.FMX
Form Compiler Form Runtime
Definitions

Runfiles
Build Forms
Características de Form Builder

Características:

• Insertar, actualizar, borrar y consultar datos.

• Presentar datos: texto, sonido, video, imagen y controles


Active X.

• Controlar formas a través de varias ventanas y transacciones


a la base de datos.

• Accesar a Graphics y aplicaciones OLE2.


• Utilizar menues integrados.
• Enviar datos directamente a Report Builder.

Build Forms
Modos de Operación
Dentro de Form Builder existen dos modos de operación:

Modo Consulta (Enter Query mode) Modo normal (Normal mode)

Permite: Permite:
•Consultas restringidas y •Consultas sin restricciones
sin restricción. •Insertar, Actualizar, Borrar
•Conteo de registros •Commit
No permite: •Navegación fuera del bloque
•Navegación fuera del bloque de datos actual
de datos •Salir de la sesión
•Salir de la sesión
No permite:
•Insertar, Actualizar, Borrar •Consultas restringidas

Build Forms
Componentes de una forma
Ventana:
Contenedor de los objetos visuales de la forma.

Canvas:
Superficie dentro de una ventana,sobre la cual se colocan
los items e imagenes.

Bloques:
Es el propietario lógico de los elementos que se despliegan
dentro del “Canvas”. Existen dos tipos de bloques:

Bloques de datos. Estan asociado a una tabla de la base de datos.


Bloques de control. No estan asociados a una tabla.

Build Forms
Relaciones entre Bloques

Master Master Master

Detail Detail Detail Detail

Detail

Es de mayor conveniencia:
crear varias formas con pocos bloques, que
crear una forma con varios bloques.
Build Forms
Blocks, Items and Canvases

Canvas 1 Canvas 2

Items Items
Block B
Block A Build Forms
Modulo de Jerarquía

Table

Module Database
Blocks
Column
Item
Trigger
Item
Frame Canvas
Program Item
Units

Trigger Trigger
Window

Build Forms
Canvas Types
Horizontal Toolbar

Vertical
Stacked
Toolbar
Canvas

Tab

Tab Canvas

Build Forms
Creación de una Forma

Para Utilizar

Crear un modulo vacío Object Navigator


Crear un bloque de datos y sus Data Block Wizard
“items”
Aplicar estándares Object Library
Afinar el Diseño Layout wizard o
Layout editor
Poner propiedades a los Property Palette
objetos
Agregar Código PL/SQL editor
Probar el módulo de la forma Forms Runtime

Build Forms
Property Palette

Cada objeto tiene diferentes propiedades. Estas propiedades


están divididas en los siguientes grupos:
• General
• Navegación
• Registros
• Base de Datos
• Atributos Visuales
• Etiquetas (prompt)
• Fuentes y Color
• Física

Build Forms
Elemento (Text Item )
Prompt

Es un objeto en la interfaz a través del cual se puede:


consultar, insertar, actualizar y borrar datos.

Usualmente un “Text Item” corresponde a una columna de


la base de datos. Cuando es creado el tipo por default es texto.

Posee propiedades: Generales, Físicas, de Registros,


de Fuente y Color, Etiquetas (Prompt), etc.

Las propiedades “Keyboard Navigable” y “Enabled” permiten o


prohiben la navegación e interacción con el “Text Item”

Se pueden crear “Text Item” multi-líneas


Build Forms
LOVs

Lista de Valores (LOV) . Objeto dentro de una forma que cuando


es activado en tiempo de ejecución, abre su propia ventana
para elegir una opción de una lista de valores.

Características:
Dinámicos
Independientes
Flexibles
Eficientes

Las listas de valores pueden devolver más de un valor y asignarselo


tanto a variables como a los “items”.

Build Forms
Input Items and Noninput Items
Input Items Noninput Items
Aceptan entradas por parte del No aceptan entradas directas por
usuario. Pueden interactuar parte del usuario.
con la base de datos.
Elementos que representan datos a
desplegarse:
Check boxes Etiqueta
Display Items
Image Items
List Items Opción Calculated Items

Elementos que no representan datos a


Radio Groups Opción 1 desplegarse:
Opción 2
Opción 3
Sound Items
Buttons
Build Forms
Calculated Item
Se pueden realizar campos en donde se invoque una fórmula.

Existen dos modos de calcular una operación: por fórmulas o por sumas

Dentro de las funciones de sumas o total se encuentran:


AVG, COUNT, MAX, MIN, SUM, VARIANCE

Una suma o total se aplica para operaciones realizadas verticalmente,


invoca los
valores de un solo item.

Una fórmula se aplica para operaciones horizontales invocando a una o


más variables.

Build Forms
Triggers

Existen tres principales componentes a considerar cuando se


diseña un trigger:

Pre-
Post-
Form Trigger When-
Block Scope Type On-
Item Key-

Code

PL/SQL
User subprograms
Built-in subprograms
Build Forms
Variables y Built-in

Variables de Form Builder. Requiere del prefijo “ : ” para hacer referencia


a su valor.
: block_name.item_name
:GLOBAL.variable_name
:SYSTEM. variable_name
:PARAMETER.name

Variables PL/SQL. Están disponibles para todos los triggers que accesen
a ese paquete.

Form Builder provee de un conjunto de subprogramas predefinidos llamados


Built-ins.
* EDIT_TEXTITEM * ENTER_QUERY * SHOW_LOV
* EXIT_FORM * GO_BLOCK * GO_ITEM
* MESSAGE * SHOW_ALERT * SHOW_EDITOR
Build Forms
Interacción de los Triggers con Items y Nonitems

When-Button-Pressed

When-Checkbox-Changed

When-Radio-Changed

When-Image-Pressed

When-Image-Activated

When-List-Changed

When-List-Activated

Build Forms
Interacción de los Triggers con Items y Nonitems
When-Radio-Changed

DECLARE
v_credit_rating S_CUSTOMER.credit_rating%TYPE
BEGIN
IF :S_ORD.payment_type= ‘CREDIT’ THEN
SELECT credit_rating INTO v_credit_rating
FROM S_CUSTOMER
WHERE id= :S_ORD.customer_id;
IF v_credit_rating NOT IN (‘GOOD’, ‘EXCELLENT’) THEN
:S_ORD.payment_type := ‘CASH’;
MESSAGE (‘Warning-customer must pay cash’);
END IF;
END IF;
END;

Build Forms
Interacción de los Triggers con Items y Nonitems

When-Checkbox-Changed

IF :S_CUSTOMER.cass = ‘Y’ THEN


:S_CUSTOMER.name := ‘NAME:’ || :S_CUSTOMER.name;
END IF;

IF CHECKBOX_CHECKED (‘S_ORD.order_filled’) THEN


SET_ITEM_PROPERTY
(‘S_ORD.date_shipped’,UPDATE_ALLOWED,
PROPERTY_FALSE);
ELSE
SET_ITEM_PROPERTY
(‘S_ORD.date_shipped’,UPDATE_ALLOWED,
PROPERTY_TRUE);
END IF;
Build Forms
Interacción de los Triggers con Items y Nonitems

When-Button-Pressed
LOOP
EXIT WHEN SHOW_LOV(‘customer_lov’);
MESSAGE (‘Debes Seleccionar un Valor de la Lista’);
END LOOP

When-List-Activated

ADD_LIST_ELEMENT (‘list_item_name’,index,’label’,’value’);
DELETE_LIST_ELEMENT (‘list_item_name’,index);

When-Image-Pressed When-Image-Activated

READ_IMAGE_FILE (‘Filename’,’Filetype,’Item_name’);

Build Forms
Mensajes y Alertas

Alertas

Sistema
Aplicación SHOW_ALERT Built-in

Mensajes

On-Message trigger Informativos


On-Error trigger Error
Supress_Working (true) Trabajo
Message Built-in Aplicación

Build Forms
Mensajes y Alertas

Form_Sucess
True: Éxito, False: Error fatal
Form_Failure
True: Error, False: No hay error
Form_Fatal
True: Error fatal, False: No hay error

GO_BLOCK (‘S_INVENTORY’);
IF FORM_SUCESS THEN
EXECUTE QUERY;
ELSE
MESSAGE (‘Un error ha ocurrido’);
END IF

Build Forms
Mensajes y Alertas

Cuando se detecta un error es necesario identificarlo para tomar una


acción específica.

Built-ins
ERROR _CODE: Número del Error.
ERROR_TEXT: Descripción del Error.
ERROR_TYPE: FRM= Error en la Forma, ORA= Error de Oracle.

On-Error
IF ERROR_CODE=40202 THEN
MESSAGE (‘Este campo debe ser llenado’);
ELSE
MESSAGE (ERROR_TYPE||’-’||TO_CHAR(ERROR_CODE)||’:’||
ERROR_TEXT);
END IF;

Build Forms
Mensajes y Alertas

Los TRIGGERS poseen su propio manejador de excepciones:


FORM_TRIGGER_FAILURE

SELECT name, phone


INTO :S_ORD.customer_name, :S_ORD.customer_phone
FROM S_CUSTOMER WHERE id= :S_ORD.customer_id;
EXCEPTION
WHEN no_data_found THEN
MESSAGE (‘El Cliente no se encontro’);
RAISE form_trigger_failure

Build Forms
Alertas

Yes/No Yes/No/Cancel Informative


Question Question Messages

SET_ALERT_PROPERTY(‘alert_name’,property, ‘message’)
Cambia el mensaje que esta asignado a una alerta.
Caution
SET_ALERT_BUTTON_PROPERTY
Messages (‘alert_name’, button, property,’value’)
Cambia la etiqueta de uno de los botones

! SHOW_ALERT (‘alert_name’)
Despliega una Alerta y regresa la respuesta del usuario.

IF SHOW_ALERT (‘del_check’)=ALERT_BUTTON1 THEN


DELETE_RECORD
END IF;
Build Forms
Procesamiento de Consultas

Disparar el trigger Pre-Query


Abortar la consulta
Construccción del SELECT...

Realizar la consulta

Fetch a row into a new record

Marcar el registro como válido

Disparar el trigger Post-Query

Validar algunos cambios en el registro

Build Forms
Procesamiento de Consultas
Ejemplo de Pre-Query:

IF TO_CHAR (:S_ORD.ID)||
TO_CHAR (:S_ORD.date:ordered)||
TO_CHAR (:S_ORD.date_shipped) IS NULL THEN
MESSAGE(‘Es necesario introducir una orden
o una fecha’);
RAISE form_trigger_failure;
END IF;

Ejemplo de Post-Query

SELECT COUNT (ord_id)


INTO :S_ORD.lineitem_count
FROM S_ITEM
WHERE ord_id= :S_OR.id;
Build Forms
Información en Tiempo de Ejecución
• GET_BLOCK_PROPERTY, SET_ BLOCK_PROPERTY
GET, SET
DEFAULT_WHERE
ORDER_BY
QUERY_ALLOWED
QUERY_HITS
GET
QUERY_OPTIONS
RECORDS_TO_FETCH

• GET_ITEM_PROPERTY, SET_ITEM_PROPERTY
GET, SET
CASE_INSENSITIVE_QUERY
QUERYABLE
QUERY_ONLY
GET
QUERY_LENGTH

Build Forms
Validaciones

Form Builder realiza procesos de validación a varios niveles para


asegurar que los registros y valores individuales sean correctos.

• Forma Commit
• Bloque

• Registro When-Validate-Record

• Elemento When-Validate-Item
IF :S_ORD.date_ordered > SYSDATE THEN
MESSAGE (‘La fecha del pedido es mayor que la actual’);
RAISE form_trigger_failure;
END IF;
Build Forms
Navegación

Forms
Limitar la navegación con el mouse.
Navegación sobre el primer bloque de datos

Blocks
Estilo de navegación.
Navegación a un Bloque Previo
Navegación al Próximo Bloque

Items Mouse Navigate


Habilitarlo valores:
Navegación por el teclado
NO, YES.
Navegación por el mouse
Navegación a un “Item” previo
Navegación al próximo “Item”

Build Forms
Navegación
Trigger When-New
When-New-Form-Instance
Navegación en Triggers
When-New-Block-Instance
Go_Form
When-New-Record-Instance
Go_Block
When-New-Item-Instance
Go_Item
Triggers Pre/Post Go_Record
Pre-Form Next_Block
Post-Form Next_Item
Pre-Block Next_Key
Post-Block Next_Record
Pre-Record Previous_Block
Post-Record Previous_Item
Pre-Text-Item Previous_Record
Post-Text-Item Build Forms
Transacciones
Validar la forma
Pre-Commit
Validar el bloque

Copia el valor del “Item”

Pre-Insert Pre-Insert

Verifica valores únicos Verifica valores únicos

On-Insert Insert row On-Update Update row

Post-Insert Post-Update

Post-Forms-Commit
Commit changes
Post-Database-Commit
Build Forms
Diversos Usos para los Trigger Commit

Pre-Commit => Verificar la autorización del usuario. Utiliza métodos de


bloqueo

Pre-Delete => Implementar las reglas de borrado de las llaves-foráneas.

Pre-Insert => Llenar automáticamente columnas, Generar una secuencia


de números, verificar llaves.

Pre-update => Llenar automáticamente columnas, verificar llaves,


implementar actualizaciones en cascada o restringidas.

On-Insert/Update/Delete => Reemplazar enunciados DML del bloque.

Post-Forms-Commit => Verificar las complejas restricciones sobre varios


registros
Post-Database-Commit => Determinar si el “commit” fue exitoso o si fue
utilizado.
Build Forms
Código Flexible

Código flexible es el código que puede ser reutilizado.

Variables del sistema para localizar el enfoque:


CURSOR_BLOCK
CURSOR_RECORD
CURSOR_ITEM
CURSOR_VALUE

Variables del sistema para determinar el estado actual de la forma

• SYSTEM.RECORD_STATUS
Valores: New, Insert, Query, Changed
• SYSTEM.BLOCK_STATUS
Valores: New, Query, Changed
• SYSTEM.FORM_STATUS
Valores: New, Query, Changed

Build Forms
Project Builder

Facilita la administración de grandes y complejas aplicaciones al:

Enlista todos los archivos asociados con una aplicación en un Navegador


en común.

Automatizar acciones

Compartir proyectos entre los miembros del equipo.

Liberar la aplicación para el usuario final.

PROYECTO
Es una colección de apuntadores a los archivos que conforman una
aplicación.

Build Forms
Project Builder

Dependencia Implícita
Project Builder deduce automáticamente muchas dependencias de la
propiedad “Deliverable Type” y del “Build Form”.
Ejemplo:
Del archivo fuente .fmb se deriva el ejecutable .fmx

Dependencia Explícita
Algunas veces habrá dependencias que no pueden ser determinadas
automáticamente.

Definición de menues
Un módulo de menues es una estructura jerárquica que provee, mediante
un método fácil y rápido, una lista de opciones relacionadas con la
aplicación.

Estilos: Pull-Down, Full-Screen, Bar

Build Forms
Project Builder

Compile Selection
Esta opción compilará todos los archivos que se encuentren
previamente seleccionados.

Compile Incremental
Project Builder automáticamente determina cuáles son los
archivos que necesitan ser compilados.

Compile All
Compila todos los archivos del Proyecto.

Build Forms
The Menu Editor

Interfaz gráfica para facilitar la creación y modificación de los módulos de


los menues y sus objetos.
Plain Save
Select Tools Menu Editor  Image Activate
Check
Extensión .MMB(definición) Radio Order Id
.MMX (ejecutable) Customer Id
Sales Rep Id

Magic Copy Ctrl+C


Propiedades del Menu Item:

* Enabled * Menu Item Code


* Label * Submenu Name
* Menu Item Type * Keyboard Accelerator
* Magic Item * Icon in Menu
* Menu Item Radio Group * Icon Filename
* Command Type * Help Description
Build Forms
Mouse Events

Eventos del “Mouse”

Por movimiento: When-Mouse-Enter


Entrar a un “item” o “canvas”
Salir de un “item” o “canvas”
Movimiento en General

Por los botones del “mouse”


Click When-Mouse-Leave
Double-Click

Para cambiar el estilo del cursor


dinámicamente:
SET_APPLICATION_PROPERTY
(CURSOR_STYLE,’value’); When-Mouse-Move
Defauly, busy, crosshair, help,
insertion.
Mouse Events

Variables del Sistema para determinar a donde se ha movido el mouse.

SYSTEM.MOUSE_FORM

SYSTEM.MOUSE_CANVAS

SYSTEM.MOUSE_X_POS

SYSTEM.MOUSE_Y_POS
SYSTEM.MOUSE_ITEM

SYSTEM.MOUSE_RECORD
SYSTEM.MOUSE_RECORD
_OFFSET
Controlando Ventanas y “Canvas”

Triggers: Built-ins
When-Window-Activated FIND_CANVAS, FIND_VIEW
When-Window-Desactivated GET_CANVAS_PROPERTY
When-Window-Closed GET_VIEW_PROPERTY
When-Window-Resized SET_CANVAS_PROPERTY
SET_VIEW_PROPERTY
Variable del sistema: HIDE_VIEW
:SYSTEM.EVENT_WINDOW SHOW_VIEW
REPLACE_CONTENT_VIEW
Built-In SCROLL_VIEW
FIND-WINDOW
GET_WINDOW_PROPERTY
HIDE_WINDOW
MOVE_WINDOW
RESIZE_WINDOW
SET_WINDOW_PROPERTY
SHOW_WINDOW
Componentes Reusables

Es un objeto que se puede reusar en todas las aplicaciones.

Controles ActiveX
Calendario
Navegador
Ayuda en línea
Utilerías y Bibliotecas para Formas
Menues
Iconos