• Like
Practica form builder
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Practica form builder

  • 158 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
158
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Base de datos Ing. Edwin Calle TerrazasS I S T E M A C O M E R C I A LFORMULARIO CLIENTEWHEN-WINDOW- ACTIVATED : (Tambien para cuando cargue sus datos del form: do_key(execute_query );set_item_property(GUARDAR,enabled,property_true);WHEN-NEW-FORM-INSTANCESET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,window_state,maximize);SET_WINDOW_PROPERTY(MCLIENTE,window_state,maximize);PRE-INSERTselect contador_cliente.nextvalinto :CLIENTE.CODCLIENTEfrom sys.dual;exceptionwhen others then message(Falla en asignación de Cliente.CodCliente..!!);raise form_trigger_failure;PRE-QUERY:Cliente.codcliente:=:parameter.codigo;KEY-ENTQRYdo_key(execute_query);
  • 2. Base de datos Ing. Edwin Calle Terrazas-------------------------Botones----------------------------BT_NUEVO WHEN-BUTTON-PRESSEDgo_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_GRABARgo_block(CLIENTE);commit_form;set_item_property(NUEVO,enabled,property_True);set_item_property(GUARDAR,enabled,property_false);MODIFICARif :System.Mode = NORMAL thengo_block(Cliente);commit_form;end if;clear_block(No_Validate);do_key(enter_query);ELIMINARgo_block(cliente);delete_record;commit_form;BUSCARIF SHOW_LOV(LISTA_CLIENTE) then null; //Hay q crear un LOV’s llamado: LISTA_CLIENTE, que retorneend if; //valor en el campo codcliente:parameter.codigo:=:cliente.codcliente;clear_block(No_Validate);if :system.mode <> Enter-query thendo_key(enter_query);end if;CREACIÓN DE MENUSSALIRexit_form;CONSULTARgo_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);PRIMEROgo_block(CLIENTE);FIRST_RECORD;ANTERIORgo_block(CLIENTE);PREVIOUS_RECORD;SIGUIENTEgo_block(CLIENTE);NEXT_RECORD;ULTIMOgo_block(CLIENTE);LAST_RECORD;
  • 3. Base de datos Ing. Edwin Calle TerrazasFORMULARIO PRINCIPAL(Ambos en modo diseño)WHEN-WINDOW-ACTIVATEDSET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,window_state,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 lossubmenu, no debe haber ninguno sueldo.Luego hacemos:File – Administración – Compile FilePara insertarlo en el formularioclic Der en Form PRINCIPAL – Paleta de PropiedadesMenu Module: d:proymenmenu.mmx
  • 4. Base de datos Ing. Edwin Calle TerrazasFORMULARIO PEDIDOS ( MAESTRO / DETALLE )Creamos el bloque pedido y luego añadimos el text NOM_EMP, APE_EMP y NOM_CLI, APE_CLINOM_EMP, APE_EMP, NOM_CLI y APE_CLI, no son item de la base de datos, o sea Database item= NoCrear 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 / DetalleTambién, ON-POPULATE-DETAILS y ON-CHECK-DELETE-MASTERWHEN-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;begincod:=:PEDIDO.CODEMP;select nombre, apellidosinto :PEDIDO.NOM_EMP, :PEDIDO.APE_empfrom empleadowhere codemp=cod;end;WHEN-VALIDATE-ITEM (CODCLIENTE)declare cod number;begincod:=:PEDIDO.CODCLIENTE;select nombre, apellidosinto :PEDIDO.NOM_CLI, :PEDIDO.APE_CLIfrom CLIENTEwhere codcliente=cod;end;KEY-ENTQRYgo_block(Pedido);do_key(execute_query);go_block(Detalle_Pedido);do_key(execute_query);PRE-QUERY:Pedido.nroped:=:parameter.codven;PRE-INSERTselect contador_pedido.nextvalinto :PEDIDO.NROPEDfrom sys.dual;exceptionwhen others thenmessage(Falla en asignación dePEDIDO.NROPED..!!);raise form_trigger_failure;POST-QUERY: Después de consultar cada registro depedido, permite mostrar los nombres y apellidos de Clientey Empleado (si usamos siguiente, anterior, etc)select nombre, apellidosinto :PEDIDO.NOM_CLI, :PEDIDO.APE_CLIfrom CLIENTEwhere codcliente=:pedido.codcliente;select nombre, apellidosinto :PEDIDO.NOM_emp, :PEDIDO.APE_empfrom empleadowhere codemp=:pedido.codemp;
  • 5. Base de datos Ing. Edwin Calle TerrazasLuego 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 SUBTOTALClic der Prop al Item SUBTOTAL:nvl(:detalle_pedido.preciov*:detalle_pedido.cantidad,0)Para el total, crear un nuevo bloque de forma manual: TOTALESItem type : Display itemData type : NumberMaximun Length : 16Cuando pierda el enfoque, pero validando sobre el itemWHEN-VALIDATE-ITEM (Para el campo CODPRO)select descripcioninto :detalle_pedido.descripcionfrom productowhere codpro=:detalle_pedido.codpro;select preciointo :detalle_pedido.preciovfrom productowhere 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 losproductos muestre su descripción y precio.Basta con esto:select descripcioninto :detalle_pedido.descripcionfrom productowhere codpro=:detalle_pedido.codpro;WHEN-VALIDATE-ITEM para CANTIDADdeclare cant number;beginselect stock into cant from Productowhere 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, preciointo :detalle_pedido.descrip, :detalle_pedido.preciovfrom producto where codpro = :detalle_pedido.codpro;:detalle_pedido.subtotal:= nvl(:detalle_pedido.preciov *:detalle_pedido.cantidad,0);
  • 6. Base de datos Ing. Edwin Calle TerrazasCrear un Canvas (lienzo), de tipo Horizontal Toolbar, con el nombre de BARRALuego crear un Bloque manualmente, con el nombre: BOTONESDespués poner los botones en BARRA, sobre el Lienzo, pero tiene q colocarse en los item del bloque BOTONES.NUEVO WHEN-BUTTON-PRESSEDgo_block(botones);create_record;clear_form;set_item_property(NUEVO,enabled,property_false);set_item_property(GUARDAR,enabled,property_True);:pedido.fecha:=sysdate;GUARDARgo_block(Pedido);commit_form;go_block(Detalle_Pedido);commit_form;set_item_property(NUEVO,enabled,property_true);set_item_property(GUARDAR,enabled,property_false);MODIFICARgo_block(Detalle_Pedido);if :system.form_status = CHANGED thencommit_form;end if;set_item_property(NUEVO,enabled,property_true);set_item_property(GUARDAR,enabled,property_false);ELIMINARgo_block(DETALLE_PEDIDO);delete_record;go_block(PEDIDO);delete_record;commit_form;
  • 7. Base de datos Ing. Edwin Calle TerrazasWHEN-WINDOW-ACTIVATEDgo_block(proveedor);do_key(execute_query);activarbotones;KEY-ENTQRYdo_key(execute_query);PRE-QUERY:proveedor.codproveedor:=:parameter.codigo;FORMULARIO PROVEEDORDespué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 : MensajeDefault Button Alert : Button2 Para cambiar el text item por un Combo Box, Propiedades del Text item PAISItem Type : List item Element list : Colocar los elementos y un List item valueList style : PopList Column name : PAIS También creamo una lista llamada: L_PROVEEDOR para el campo CODPROVEEDORPROCEDURE ActivarBotones ISit_nuevo item;it_guardar item;it_modificar item;it_eliminar item;it_buscar item;it_salir item;BEGINgo_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 ISit_nuevo item;it_guardar item;it_eliminar item;it_modificar item;it_buscar item;it_salir item;BEGINgo_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 TerrazasSeguidamente introducimos código a los botonesNUEVOdeclareit_eliminar item;beginit_eliminar:=find_item(ELIMINAR);:parameter.codigo:=:proveedor.codproveedor;do_key(create_record);:proveedor.codproveedor:=0;DesactivarBotones;:parameter.estado:=Nuevo;end;ELIMINARdeclareidalerta alert;boton number;beginidalerta:=find_alert(alerta);set_alert_property(idalerta,alert_message_text,Seguro de Salir);boton:=show_alert(idalerta);if boton=alert_button1 thendo_key(delete_record);do_key(commit_form);select max(codproveedor) into :parameter.codigofrom proveedor;do_key(enter_query);end if;end;GUARDARbegin--como Tiene contador lo llamamos si elestado es Nuevoif :parameter.estado=Nuevo thenselect contador_proveedor.nextvalinto :proveedor.codproveedorfrom dual;end if;do_key(commit_form);ActivarBotones;end;MODIFICARbeginDesactivarBotones;:parameter.codigo:=:proveedor.codproveedor;:parameter.estado:=Modificar;do_key(enter_query);end;