SlideShare una empresa de Scribd logo
Base de datos Ing. Edwin Calle Terrazas
S I S T E M A C O M E R C I A L
FORMULARIO CLIENTE
WHEN-WINDOW- ACTIVATED : (Tambien para cuando cargue sus datos del form: do_key('execute_query' );
set_item_property('GUARDAR',enabled,property_true);
WHEN-NEW-FORM-INSTANCE
SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,window_state,maximize);
SET_WINDOW_PROPERTY('MCLIENTE',window_state,maximize);
PRE-INSERT
select contador_cliente.nextval
into :CLIENTE.CODCLIENTE
from sys.dual;
exception
when others then message('Falla en asignación de Cliente.CodCliente..!!');
raise form_trigger_failure;
PRE-QUERY
:Cliente.codcliente:=:parameter.codigo;
KEY-ENTQRY
do_key('execute_query');
Base de datos Ing. Edwin Calle Terrazas
-------------------------Botones----------------------------
BT_NUEVO WHEN-BUTTON-PRESSED
go_block('CLIENTE');
create_record;
set_item_property('NUEVO',enabled,property_false);
set_item_property('GUARDAR',enabled,property_True);
set_item_property('MODIFICAR',enabled,property_false);
set_item_property('ELIMINAR',enabled,property_false);
BT_GRABAR
go_block('CLIENTE');
commit_form;
set_item_property('NUEVO',enabled,property_True);
set_item_property('GUARDAR',enabled,property_false);
MODIFICAR
if :System.Mode = 'NORMAL' then
go_block('Cliente');
commit_form;
end if;
clear_block(No_Validate);
do_key('enter_query');
ELIMINAR
go_block('cliente');
delete_record;
commit_form;
BUSCAR
IF SHOW_LOV('LISTA_CLIENTE') then null; //Hay q crear un LOV’s llamado: LISTA_CLIENTE, que retorne
end if; //valor en el campo codcliente
:parameter.codigo:=:cliente.codcliente;
clear_block(No_Validate);
if :system.mode <> 'Enter-query' then
do_key('enter_query');
end if;
CREACIÓN DE MENUS
SALIR
exit_form;
CONSULTAR
go_block('CLIENTE');
execute_query;
set_item_property('MODIFICAR',enabled,property_true);
set_item_property('ELIMINAR',enabled,property_True);
set_item_property('GUARDAR',enabled,property_false);
set_item_property('NUEVO',enabled,property_true);
PRIMERO
go_block('CLIENTE');
FIRST_RECORD;
ANTERIOR
go_block('CLIENTE');
PREVIOUS_RECORD;
SIGUIENTE
go_block('CLIENTE');
NEXT_RECORD;
ULTIMO
go_block('CLIENTE');
LAST_RECORD;
Base de datos Ing. Edwin Calle Terrazas
FORMULARIO PRINCIPAL
(Ambos en modo diseño)
WHEN-WINDOW-ACTIVATED
SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,window_stat
e,maximize);
Read_Image_File('D:ProyimgSTART.bmp', 'ANY',
'CONTROL.PANTALLA');
WHEN-NEW-FORM-INSTANCE (op)
SET_WINDOW_PROPERTY('PRINCIPAL',window_state,maximize);
CREACIÓN DE MENU PRINCIPAL
(Quedaría de esta forma)
open_form('d:proyfrmcliente');
Antes de crearlo o compilarlo tenemos q introducir codigo a todos los
submenu, no debe haber ninguno sueldo.
Luego hacemos:
File – Administración – Compile File
Para insertarlo en el formulario
clic Der en Form PRINCIPAL – Paleta de Propiedades
Menu Module: d:proymenmenu.mmx
Base de datos Ing. Edwin Calle Terrazas
FORMULARIO PEDIDOS ( MAESTRO / DETALLE )
Creamos el bloque pedido y luego añadimos el text NOM_EMP, APE_EMP y NOM_CLI, APE_CLI
NOM_EMP, APE_EMP, NOM_CLI y APE_CLI, no son item de la base de datos, o sea Database item= No
Crear los LOV, luego en la paleta de Prop colocar los LOVs en CODEMP,CODCLIENTE y CODPRO .
ON-CLEAR-DETAILS, se crea por la relacion Maestro / Detalle
También, ON-POPULATE-DETAILS y ON-CHECK-DELETE-MASTER
WHEN-NEW-FORM- INSTANCE (mejor colocarlo en Nuevo)
:pedido.fecha:=sysdate; o también para cambiarle formato
--:pedido.fecha:=TRUNC(TO_DATE(sysdate,'DD/MM/YY'), 'MONTH');
WHEN-VALIDATE-ITEM (CODEMP)
declare cod number;
begin
cod:=:PEDIDO.CODEMP;
select nombre, apellidos
into :PEDIDO.NOM_EMP, :PEDIDO.APE_emp
from empleado
where codemp=cod;
end;
WHEN-VALIDATE-ITEM (CODCLIENTE)
declare cod number;
begin
cod:=:PEDIDO.CODCLIENTE;
select nombre, apellidos
into :PEDIDO.NOM_CLI, :PEDIDO.APE_CLI
from CLIENTE
where codcliente=cod;
end;
KEY-ENTQRY
go_block('Pedido');
do_key('execute_query');
go_block('Detalle_Pedido');
do_key('execute_query');
PRE-QUERY
:Pedido.nroped:=:parameter.codven;
PRE-INSERT
select contador_pedido.nextval
into :PEDIDO.NROPED
from sys.dual;
exception
when others then
message('Falla en asignación de
PEDIDO.NROPED..!!');
raise form_trigger_failure;
POST-QUERY: Después de consultar cada registro de
pedido, permite mostrar los nombres y apellidos de Cliente
y Empleado (si usamos siguiente, anterior, etc)
select nombre, apellidos
into :PEDIDO.NOM_CLI, :PEDIDO.APE_CLI
from CLIENTE
where codcliente=:pedido.codcliente;
select nombre, apellidos
into :PEDIDO.NOM_emp, :PEDIDO.APE_emp
from empleado
where codemp=:pedido.codemp;
Base de datos Ing. Edwin Calle Terrazas
Luego crear con el asistente el bloque DETALLE_PEDIDO (relacionar con PEDIDO)
Añadir el text DESCRIPCION y SUBTOTAL(database item=No), Crear si no lo creado y en Prop de CODPRO añadir el LOV (L_PRO)
Luego colocar los siguientes disparadores:
Propiedades de SUBTOTAL
Clic der Prop al Item SUBTOTAL:
nvl(:detalle_pedido.preciov*:detalle_pedido.cantidad,0)
Para el total, crear un nuevo bloque de forma manual: TOTALES
Item type : Display item
Data type : Number
Maximun Length : 16
Cuando pierda el enfoque, pero validando sobre el item
WHEN-VALIDATE-ITEM (Para el campo CODPRO)
select descripcion
into :detalle_pedido.descripcion
from producto
where codpro=:detalle_pedido.codpro;
select precio
into :detalle_pedido.preciov
from producto
where codpro = :detalle_pedido.codpro;
--Cuando colocamos el item CODPRO hace le calculo
:detalle_pedido.SUBTOTAL:= nvl(:detalle_pedido.preciov *
:detalle_pedido.cantidad,0);
POST-QUERY: Para q al consultar cada registro de los
productos muestre su descripción y precio.
Basta con esto:
select descripcion
into :detalle_pedido.descripcion
from producto
where codpro=:detalle_pedido.codpro;
WHEN-VALIDATE-ITEM para CANTIDAD
declare cant number;
begin
select stock into cant from Producto
where codpro = :detalle_pedido.codpro;
if :detalle_pedido.cantidad > cant then
:detalle_pedido.cantidad:=cant;
message('No existe la cantidad de produtos');
end if;
end;
select descripcion, precio
into :detalle_pedido.descrip, :detalle_pedido.preciov
from producto where codpro = :detalle_pedido.codpro;
:detalle_pedido.subtotal:= nvl(:detalle_pedido.preciov *
:detalle_pedido.cantidad,0);
Base de datos Ing. Edwin Calle Terrazas
Crear un Canvas (lienzo), de tipo Horizontal Toolbar, con el nombre de BARRA
Luego crear un Bloque manualmente, con el nombre: BOTONES
Después poner los botones en BARRA, sobre el Lienzo, pero tiene q colocarse en los item del bloque BOTONES.
NUEVO WHEN-BUTTON-PRESSED
go_block('botones');
create_record;
clear_form;
set_item_property('NUEVO',enabled,property_false);
set_item_property('GUARDAR',enabled,property_True);
:pedido.fecha:=sysdate;
GUARDAR
go_block('Pedido');
commit_form;
go_block('Detalle_Pedido');
commit_form;
set_item_property('NUEVO',enabled,property_true);
set_item_property('GUARDAR',enabled,property_false);
MODIFICAR
go_block('Detalle_Pedido');
if :system.form_status = 'CHANGED' then
commit_form;
end if;
set_item_property('NUEVO',enabled,property_true);
set_item_property('GUARDAR',enabled,property_false);
ELIMINAR
go_block('DETALLE_PEDIDO');
delete_record;
go_block('PEDIDO');
delete_record;
commit_form;
Base de datos Ing. Edwin Calle Terrazas
WHEN-WINDOW-ACTIVATED
go_block('proveedor');
do_key('execute_query');
activarbotones;
KEY-ENTQRY
do_key('execute_query');
PRE-QUERY
:proveedor.codproveedor:=:parameter.codigo;
FORMULARIO PROVEEDOR
Después de crear el bloque con el asistente, coloca un Tab Canvas, y dentro de el coloca los Text Item
(El Tab Cambas no es necesario usar aquí porque es cuando queremos ver varias fichas de formularios, solo usaremos la ficha REGISTRAR)
Después colocamos los siguientes procedimientos que permite activar y desactivas los botones
 Después creamos una alerta con el nombre ALERTA, luego Prop: Title : Mensaje
Default Button Alert : Button2
 Para cambiar el text item por un Combo Box, Propiedades del Text item PAIS
Item Type : List item Element list : Colocar los elementos y un List item value
List style : PopList Column name : PAIS
 También creamo una lista llamada: L_PROVEEDOR para el campo CODPROVEEDOR
PROCEDURE ActivarBotones IS
it_nuevo item;
it_guardar item;
it_modificar item;
it_eliminar item;
it_buscar item;
it_salir item;
BEGIN
go_block('proveedor');
it_nuevo:=find_item('nuevo');
it_guardar:=find_item('guardar');
it_eliminar:=find_item('eliminar');
it_modificar:=find_item('modificar');
it_buscar:=find_item('buscar');
Set_Item_Property(it_nuevo,enabled,property_true);
Set_Item_Property(it_guardar,enabled,property_false);
Set_Item_Property(it_modificar,enabled,property_true);
Set_Item_Property(it_buscar,enabled,property_true);
Set_Item_Property(it_eliminar,label,'&ELIMINAR');
END;
PROCEDURE DesactivarBotones IS
it_nuevo item;
it_guardar item;
it_eliminar item;
it_modificar item;
it_buscar item;
it_salir item;
BEGIN
go_block('proveedor');
it_nuevo:=find_item('nuevo');
it_guardar:=find_item('guardar');
it_eliminar:=find_item('eliminar');
it_modificar:=find_item('modificar');
it_buscar:=find_item('buscar');
Set_Item_Property(it_nuevo,enabled,property_false);
Set_Item_Property(it_guardar,enabled,property_true);
Set_Item_Property(it_modificar,enabled,property_false);
Set_Item_Property(it_buscar,enabled,property_false);
Set_Item_Property(it_eliminar,label,'&DESCARTAR');
END;
Base de datos Ing. Edwin Calle Terrazas
Seguidamente introducimos código a los botones
NUEVO
declare
it_eliminar item;
begin
it_eliminar:=find_item('ELIMINAR');
:parameter.codigo:=:proveedor.codproveedor;
do_key('create_record');
:proveedor.codproveedor:=0;
DesactivarBotones;
:parameter.estado:='Nuevo';
end;
ELIMINAR
declare
idalerta alert;
boton number;
begin
idalerta:=find_alert('alerta');
set_alert_property(idalerta,alert_message_text,'Seguro de Salir');
boton:=show_alert(idalerta);
if boton=alert_button1 then
do_key('delete_record');
do_key('commit_form');
select max(codproveedor) into :parameter.codigo
from proveedor;
do_key('enter_query');
end if;
end;
GUARDAR
begin
--como Tiene contador lo llamamos si el
estado es Nuevo
if :parameter.estado='Nuevo' then
select contador_proveedor.nextval
into :proveedor.codproveedor
from dual;
end if;
do_key('commit_form');
ActivarBotones;
end;
MODIFICAR
begin
DesactivarBotones;
:parameter.codigo:=:proveedor.
codproveedor;
:parameter.estado:='Modificar';
do_key('enter_query');
end;

Más contenido relacionado

Similar a Practica form builder

taller administrar bd mysql desde php
taller administrar bd mysql desde phptaller administrar bd mysql desde php
taller administrar bd mysql desde php
El Progreso
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
paulcuenca9
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
guesta403644
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
Rafa
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
guesta403644
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
Corfapo
 

Similar a Practica form builder (20)

Commit&rollback
Commit&rollbackCommit&rollback
Commit&rollback
 
Alfred felix cuarto_avance_proyecto_bd
Alfred felix cuarto_avance_proyecto_bdAlfred felix cuarto_avance_proyecto_bd
Alfred felix cuarto_avance_proyecto_bd
 
Insert into
Insert intoInsert into
Insert into
 
taller administrar bd mysql desde php
taller administrar bd mysql desde phptaller administrar bd mysql desde php
taller administrar bd mysql desde php
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
In 22
In 22In 22
In 22
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Ejercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sqlEjercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sql
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Practica Cuatro Delphi
Practica Cuatro  DelphiPractica Cuatro  Delphi
Practica Cuatro Delphi
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Procedimientos almacenadoss
Procedimientos almacenadossProcedimientos almacenadoss
Procedimientos almacenadoss
 

Practica form builder

  • 1. Base de datos Ing. Edwin Calle Terrazas S I S T E M A C O M E R C I A L FORMULARIO CLIENTE WHEN-WINDOW- ACTIVATED : (Tambien para cuando cargue sus datos del form: do_key('execute_query' ); set_item_property('GUARDAR',enabled,property_true); WHEN-NEW-FORM-INSTANCE SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,window_state,maximize); SET_WINDOW_PROPERTY('MCLIENTE',window_state,maximize); PRE-INSERT select contador_cliente.nextval into :CLIENTE.CODCLIENTE from sys.dual; exception when others then message('Falla en asignación de Cliente.CodCliente..!!'); raise form_trigger_failure; PRE-QUERY :Cliente.codcliente:=:parameter.codigo; KEY-ENTQRY do_key('execute_query');
  • 2. Base de datos Ing. Edwin Calle Terrazas -------------------------Botones---------------------------- BT_NUEVO WHEN-BUTTON-PRESSED go_block('CLIENTE'); create_record; set_item_property('NUEVO',enabled,property_false); set_item_property('GUARDAR',enabled,property_True); set_item_property('MODIFICAR',enabled,property_false); set_item_property('ELIMINAR',enabled,property_false); BT_GRABAR go_block('CLIENTE'); commit_form; set_item_property('NUEVO',enabled,property_True); set_item_property('GUARDAR',enabled,property_false); MODIFICAR if :System.Mode = 'NORMAL' then go_block('Cliente'); commit_form; end if; clear_block(No_Validate); do_key('enter_query'); ELIMINAR go_block('cliente'); delete_record; commit_form; BUSCAR IF SHOW_LOV('LISTA_CLIENTE') then null; //Hay q crear un LOV’s llamado: LISTA_CLIENTE, que retorne end if; //valor en el campo codcliente :parameter.codigo:=:cliente.codcliente; clear_block(No_Validate); if :system.mode <> 'Enter-query' then do_key('enter_query'); end if; CREACIÓN DE MENUS SALIR exit_form; CONSULTAR go_block('CLIENTE'); execute_query; set_item_property('MODIFICAR',enabled,property_true); set_item_property('ELIMINAR',enabled,property_True); set_item_property('GUARDAR',enabled,property_false); set_item_property('NUEVO',enabled,property_true); PRIMERO go_block('CLIENTE'); FIRST_RECORD; ANTERIOR go_block('CLIENTE'); PREVIOUS_RECORD; SIGUIENTE go_block('CLIENTE'); NEXT_RECORD; ULTIMO go_block('CLIENTE'); LAST_RECORD;
  • 3. Base de datos Ing. Edwin Calle Terrazas FORMULARIO PRINCIPAL (Ambos en modo diseño) WHEN-WINDOW-ACTIVATED SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,window_stat e,maximize); Read_Image_File('D:ProyimgSTART.bmp', 'ANY', 'CONTROL.PANTALLA'); WHEN-NEW-FORM-INSTANCE (op) SET_WINDOW_PROPERTY('PRINCIPAL',window_state,maximize); CREACIÓN DE MENU PRINCIPAL (Quedaría de esta forma) open_form('d:proyfrmcliente'); Antes de crearlo o compilarlo tenemos q introducir codigo a todos los submenu, no debe haber ninguno sueldo. Luego hacemos: File – Administración – Compile File Para insertarlo en el formulario clic Der en Form PRINCIPAL – Paleta de Propiedades Menu Module: d:proymenmenu.mmx
  • 4. Base de datos Ing. Edwin Calle Terrazas FORMULARIO PEDIDOS ( MAESTRO / DETALLE ) Creamos el bloque pedido y luego añadimos el text NOM_EMP, APE_EMP y NOM_CLI, APE_CLI NOM_EMP, APE_EMP, NOM_CLI y APE_CLI, no son item de la base de datos, o sea Database item= No Crear los LOV, luego en la paleta de Prop colocar los LOVs en CODEMP,CODCLIENTE y CODPRO . ON-CLEAR-DETAILS, se crea por la relacion Maestro / Detalle También, ON-POPULATE-DETAILS y ON-CHECK-DELETE-MASTER WHEN-NEW-FORM- INSTANCE (mejor colocarlo en Nuevo) :pedido.fecha:=sysdate; o también para cambiarle formato --:pedido.fecha:=TRUNC(TO_DATE(sysdate,'DD/MM/YY'), 'MONTH'); WHEN-VALIDATE-ITEM (CODEMP) declare cod number; begin cod:=:PEDIDO.CODEMP; select nombre, apellidos into :PEDIDO.NOM_EMP, :PEDIDO.APE_emp from empleado where codemp=cod; end; WHEN-VALIDATE-ITEM (CODCLIENTE) declare cod number; begin cod:=:PEDIDO.CODCLIENTE; select nombre, apellidos into :PEDIDO.NOM_CLI, :PEDIDO.APE_CLI from CLIENTE where codcliente=cod; end; KEY-ENTQRY go_block('Pedido'); do_key('execute_query'); go_block('Detalle_Pedido'); do_key('execute_query'); PRE-QUERY :Pedido.nroped:=:parameter.codven; PRE-INSERT select contador_pedido.nextval into :PEDIDO.NROPED from sys.dual; exception when others then message('Falla en asignación de PEDIDO.NROPED..!!'); raise form_trigger_failure; POST-QUERY: Después de consultar cada registro de pedido, permite mostrar los nombres y apellidos de Cliente y Empleado (si usamos siguiente, anterior, etc) select nombre, apellidos into :PEDIDO.NOM_CLI, :PEDIDO.APE_CLI from CLIENTE where codcliente=:pedido.codcliente; select nombre, apellidos into :PEDIDO.NOM_emp, :PEDIDO.APE_emp from empleado where codemp=:pedido.codemp;
  • 5. Base de datos Ing. Edwin Calle Terrazas Luego crear con el asistente el bloque DETALLE_PEDIDO (relacionar con PEDIDO) Añadir el text DESCRIPCION y SUBTOTAL(database item=No), Crear si no lo creado y en Prop de CODPRO añadir el LOV (L_PRO) Luego colocar los siguientes disparadores: Propiedades de SUBTOTAL Clic der Prop al Item SUBTOTAL: nvl(:detalle_pedido.preciov*:detalle_pedido.cantidad,0) Para el total, crear un nuevo bloque de forma manual: TOTALES Item type : Display item Data type : Number Maximun Length : 16 Cuando pierda el enfoque, pero validando sobre el item WHEN-VALIDATE-ITEM (Para el campo CODPRO) select descripcion into :detalle_pedido.descripcion from producto where codpro=:detalle_pedido.codpro; select precio into :detalle_pedido.preciov from producto where codpro = :detalle_pedido.codpro; --Cuando colocamos el item CODPRO hace le calculo :detalle_pedido.SUBTOTAL:= nvl(:detalle_pedido.preciov * :detalle_pedido.cantidad,0); POST-QUERY: Para q al consultar cada registro de los productos muestre su descripción y precio. Basta con esto: select descripcion into :detalle_pedido.descripcion from producto where codpro=:detalle_pedido.codpro; WHEN-VALIDATE-ITEM para CANTIDAD declare cant number; begin select stock into cant from Producto where codpro = :detalle_pedido.codpro; if :detalle_pedido.cantidad > cant then :detalle_pedido.cantidad:=cant; message('No existe la cantidad de produtos'); end if; end; select descripcion, precio into :detalle_pedido.descrip, :detalle_pedido.preciov from producto where codpro = :detalle_pedido.codpro; :detalle_pedido.subtotal:= nvl(:detalle_pedido.preciov * :detalle_pedido.cantidad,0);
  • 6. Base de datos Ing. Edwin Calle Terrazas Crear un Canvas (lienzo), de tipo Horizontal Toolbar, con el nombre de BARRA Luego crear un Bloque manualmente, con el nombre: BOTONES Después poner los botones en BARRA, sobre el Lienzo, pero tiene q colocarse en los item del bloque BOTONES. NUEVO WHEN-BUTTON-PRESSED go_block('botones'); create_record; clear_form; set_item_property('NUEVO',enabled,property_false); set_item_property('GUARDAR',enabled,property_True); :pedido.fecha:=sysdate; GUARDAR go_block('Pedido'); commit_form; go_block('Detalle_Pedido'); commit_form; set_item_property('NUEVO',enabled,property_true); set_item_property('GUARDAR',enabled,property_false); MODIFICAR go_block('Detalle_Pedido'); if :system.form_status = 'CHANGED' then commit_form; end if; set_item_property('NUEVO',enabled,property_true); set_item_property('GUARDAR',enabled,property_false); ELIMINAR go_block('DETALLE_PEDIDO'); delete_record; go_block('PEDIDO'); delete_record; commit_form;
  • 7. Base de datos Ing. Edwin Calle Terrazas WHEN-WINDOW-ACTIVATED go_block('proveedor'); do_key('execute_query'); activarbotones; KEY-ENTQRY do_key('execute_query'); PRE-QUERY :proveedor.codproveedor:=:parameter.codigo; FORMULARIO PROVEEDOR Después de crear el bloque con el asistente, coloca un Tab Canvas, y dentro de el coloca los Text Item (El Tab Cambas no es necesario usar aquí porque es cuando queremos ver varias fichas de formularios, solo usaremos la ficha REGISTRAR) Después colocamos los siguientes procedimientos que permite activar y desactivas los botones  Después creamos una alerta con el nombre ALERTA, luego Prop: Title : Mensaje Default Button Alert : Button2  Para cambiar el text item por un Combo Box, Propiedades del Text item PAIS Item Type : List item Element list : Colocar los elementos y un List item value List style : PopList Column name : PAIS  También creamo una lista llamada: L_PROVEEDOR para el campo CODPROVEEDOR PROCEDURE ActivarBotones IS it_nuevo item; it_guardar item; it_modificar item; it_eliminar item; it_buscar item; it_salir item; BEGIN go_block('proveedor'); it_nuevo:=find_item('nuevo'); it_guardar:=find_item('guardar'); it_eliminar:=find_item('eliminar'); it_modificar:=find_item('modificar'); it_buscar:=find_item('buscar'); Set_Item_Property(it_nuevo,enabled,property_true); Set_Item_Property(it_guardar,enabled,property_false); Set_Item_Property(it_modificar,enabled,property_true); Set_Item_Property(it_buscar,enabled,property_true); Set_Item_Property(it_eliminar,label,'&ELIMINAR'); END; PROCEDURE DesactivarBotones IS it_nuevo item; it_guardar item; it_eliminar item; it_modificar item; it_buscar item; it_salir item; BEGIN go_block('proveedor'); it_nuevo:=find_item('nuevo'); it_guardar:=find_item('guardar'); it_eliminar:=find_item('eliminar'); it_modificar:=find_item('modificar'); it_buscar:=find_item('buscar'); Set_Item_Property(it_nuevo,enabled,property_false); Set_Item_Property(it_guardar,enabled,property_true); Set_Item_Property(it_modificar,enabled,property_false); Set_Item_Property(it_buscar,enabled,property_false); Set_Item_Property(it_eliminar,label,'&DESCARTAR'); END;
  • 8. Base de datos Ing. Edwin Calle Terrazas Seguidamente introducimos código a los botones NUEVO declare it_eliminar item; begin it_eliminar:=find_item('ELIMINAR'); :parameter.codigo:=:proveedor.codproveedor; do_key('create_record'); :proveedor.codproveedor:=0; DesactivarBotones; :parameter.estado:='Nuevo'; end; ELIMINAR declare idalerta alert; boton number; begin idalerta:=find_alert('alerta'); set_alert_property(idalerta,alert_message_text,'Seguro de Salir'); boton:=show_alert(idalerta); if boton=alert_button1 then do_key('delete_record'); do_key('commit_form'); select max(codproveedor) into :parameter.codigo from proveedor; do_key('enter_query'); end if; end; GUARDAR begin --como Tiene contador lo llamamos si el estado es Nuevo if :parameter.estado='Nuevo' then select contador_proveedor.nextval into :proveedor.codproveedor from dual; end if; do_key('commit_form'); ActivarBotones; end; MODIFICAR begin DesactivarBotones; :parameter.codigo:=:proveedor. codproveedor; :parameter.estado:='Modificar'; do_key('enter_query'); end;