power builder clase 6 - instituto...

24
Power Builder Clase 6 En clases anteriores hemos visto el IF-END IF, FOR-NEXT, ahora vamos a terminar otros comandos necesarios ya que ellos son pocos. CHOOSE CASE Una estructura de control que dirige la ejecución de un programa basada en un valor de una expresión que es evaluada(usualmente una variable) CHOOSE CASE expresion CASE expresionlista bloque de comandos { CASE expresionlista bloque de comandos ... CASE expresionlista bloque de comandos } CASE ELSE bloque de comandos } END CHOOSE Ejemplos CHOOSE CASE Weight CASE IS<16 Postage=Weight*0.30 Method="USPS" CASE 16 to 48 Postage=4.50 Method="UPS" CASE ELSE Postage=25.00 Method="FedEx" END CHOOSE CHOOSE CASE Real(sle_real.Text) CASE is < 10.99999 sle_message.Text = "Real Case < 10.99999" CASE 11.00 to 48.99999 sle_message.Text = "Real Case 11 to 48.9999 CASE is > 48.9999 sle_message.Text = "Real Case > 48.9999" CASE ELSE

Upload: lamkien

Post on 29-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Power Builder Clase 6

En clases anteriores hemos visto el IF-END IF, FOR-NEXT, ahoravamos a terminar otros comandos necesarios ya que ellos son pocos.

CHOOSE CASE

Una estructura de control que dirige la ejecución de un programabasada en un valor de una expresión que es evaluada(usualmenteuna variable)

CHOOSE CASE expresionCASE expresionlista

bloque de comandos{ CASE expresionlistabloque de comandos

. . .CASE expresionlista

bloque de comandos }CASE ELSE

bloque de comandos }END CHOOSE

Ejemplos

CHOOSE CASE WeightCASE IS<16

Postage=Weight*0.30Method="USPS"

CASE 16 to 48Postage=4.50Method="UPS"

CASE ELSEPostage=25.00Method="FedEx"

END CHOOSE

CHOOSE CASE Real(sle_real.Text)CASE is < 10.99999

sle_message.Text = "Real Case < 10.99999"CASE 11.00 to 48.99999

sle_message.Text = "Real Case 11 to 48.9999CASE is > 48.9999

sle_message.Text = "Real Case > 48.9999"CASE ELSE

sle_message.Text = "Cannot evaluate!"END CHOOSE

DO…LOOP

Una estructura de control para generar iteraciones usada paraejecutar un bloque de comandos mientras o hasta que una condiciónsea verdadera.

DO... LOOP tiene cuatro formas:

· DO UNTIL· DO WHILE· LOOP UNTIL· LOOP WHILE

DO UNTIL condiciónbloque de comandosLOOP

DObloque de comandosLOOP UNTIL condición

DO WHILE condiciónbloque de comandosLOOP

DObloque de comandosLOOP WHILE condición

Ejemplos

integer A = 1, B = 1DO UNTIL A > 15

Beep(A)A = (A + 1) * B

LOOP

integer A = 1, B = 1DO WHILE A <= 15

Beep(A)A = (A + 1) * B

LOOP

Estos comandos son más que suficientes para programar en PB.

Muy bien, abramos nuevamente la aplicación y visualicemos elsystem tree, vamos a crear un proyecto y a su ves un EXE.

Presionemos CTRL + N, vayamos a la pestaña o solapa PROYECT, yseleccionemos APPLICATION, en EXECUTEBLE FILE NAME, escribirprueba, en REBUILD, FULL, en VERSION, escribir sus datospersonales, luego hacer sobre el icono de grabar, colocar el proyectoen cualquier librería.

Ahora puedes cerrar el pintor y apreciar el system tree, ubica elproyecto.

Ok, haz doble clic sobre el para ir a editarlo y vamos a generar elproyecto, haz clic sobre el icono que está junto a la X, si reposassobre el aparecerá la leyenda DEPLOY, que significa desplegar, en laventana output no tendría que dar ningún error, si lo hay comentarloen instructor para resolverlo, cerrar el pintor y volvamos al systemtree.

Hechemos un vistazo a lo que sea generado

Si observas los archivos que están marcados, observamosPrueba.exe, prueba work space, prueba.pbl, prueba1.pbl, datos.pbl,prueba.pbd ,prueba.pbt.

Los más importantes de mencionar son .EXE, PBL y WORK SPACE.Observa el tamaño del .EXE, super pequeño en verdad, puedescorrerlo, ya no necesitas el entorno de PB, si quieres lo puedes cerrary correr el EXE.

Ahora, podes crear .DLL, donde cada librería se convertirá en unaDLL, volvamos al pintor de proyectos y hagamos un cambio, poner elcheque en machina code y observar como cambia de PBD a DLL, noolvide de chequear las librerías, volver a regenerar la aplicación ohacer el DEPLOY.

Observar nuevamente el directorio de trabajo, encontrará las DLL

Basta de compilaciones, vanos a continuar con la extensión de laaplicación, creemos una ventana y ponle de nombre w_personaldentro ella vamos a tener TABS o SOLAPAS o LENGUETAS oPESTAÑAS, en realidad reciben muchos nombres, bueno lo quepretendo es enseñarte a como crearlas y usarlas.

Una ves creada la ventana coloca sobre ella un control TAB, luego hazclic derecho sobre el y selecciona ADDà INSERT TAB PAGE

Deberías tener algo así, para generar el segundo TAB, haz clicderecho sobre NONE para que te de la oportunidad insertar el otro.

Amplía el TAB hacia la derecha y cambia de texto a los tabpage a losnone, ponle al primero Agenda y al segundo Direcciones, cámbiale decolor a tu gusto a los tabpage, coloca un icono a cada uno y cambiafont size a 14 o 15 para que se vean bien legibles y a la ventanaponle un color suave, vamos inténtalo.

Trata de dejar un espacio en la parte de abajo entre el TAB y laventana.

En el tabpage_1 Agenda, coloca una DW y asóciale d_agenda que yatenemos.

En el tabpage_2 coloca un DW

Listo, espero se parezca a esto.

Coloca dos botones en la ventana, no en DW, y ponlesFiltrar/Nombre, Ordenar/Nombres y ponles a la par un controltexto(single line edit) para el caso del filtro únicamente

Escribamos el script para el filtro

Puedes observar que para hacer mención a la DW tengo que hacerlocon la nomenclatura de punto, primero el objeto se llama tab_1,luego tiene un objeto sobre el tabpage_1 y luego la DW esta sobretabpage_1, esto se puede minimizar, lo veremos más adelante,observa setfilter() y filter().Veamos el script para el ordenamiento

Observa setsort() con dos parámetros, el primero le indica el campo yel segundo el orden A=Ascendente y D=Descendente, luego se aplicael sort(). Por último necesitamos quitar el filtro o el ordenamiento,aumentar dos pequeños botones para el reset.

Reset del filtro

Reset del ordenamiento

Ahora bien, recuerde que necesita codificar el evento open() de laventana, se recuerda?, ok, entonces procesa a codificar ese código,además necesita poner una opción más en el menú bajo PROGRAMASpara poder acceder esta ventana, colóquele un icono para poderloacceder rápidamente.

Muy bien, si ya luce así, te felicito ya eres parte del STAFF DEPROGRAMADORES DE PB.

Recuerda que tenemos pendiente la segunda solapa la de lasdirecciones, pero antes necesitamos crear una tabla de nombredirecciones que tendrá los siguientes campos, genera el índice denombre inx_direccion y que sea único y ascendente.

No_telefono varchar(8) Indice No PKDireccion varchar(40)Departamento varchar(15)Sexo varchar(10)

Luego genere dos registros con la siguiente información

Cierre el pintor y grabe los cambios.Abra el pintor de para crear una datawindow grid, seleccione todoslos campos de la tabla direcciones

Ahora necesitamos enviarle un parámetro a este SELECT, observa lasintaxis del select hasta ahora, haz clic sobre la solapa del where,aquí estableceremos la condición para traer solo los registros quequeramos.

Haz clic sobre la opción DESIGNà RETRIEVAL ARGUMENTS y generaun campo de nombre mi_telefono de tipo string, luego clic OK.

Haz clic sobre column y selecciona el campo no_telefono de la tabladirecciones y trata de hacer la condición que el no_telefono sea igualmi_telefono, nota que necesitas anteponer dos puntos antes demi_telefono.Haz clic en la solapa SYNTAX y observa el SELECT, luego haz clic enel icono RETURN

Si te pide valores a ingresar, solo haz clic en CANCELAR

Tenemos algo parecido a esto?, muy bien!!!, recuerda los tab a cero,grábalo como d_personal en la librería adecuada y asócialo a DW deltabpage2

Ejecutemos a aplicación para ver si funciona con todos los aspectosque hemos introducido y observemos que nos hace falta.Así es, si observas no se muestran los datos de la tabla dedirecciones, tenemos que hacer lo siguiente:

Ø Necesitas crear una objeto de transacción para esta tabla, tal ycomo la hiciste para la tabla de agenda

Ø Necesitas hacer un retrieve() a los registros de la tabladirecciones, recuerda que debes de enviarle un parámetro, yaque el SELECT lo espera, el parámetro es el no_telefono deagenda hacia la tabla direcciones, recordar que la relación esuna a una

Ø Necesitas sincronizar la DW de agenda con respecto a DW dedirecciones, en el sentido de acceder a las direccionescorrespondientes en base al no_telefono, esto lo debes deplanear en el evento OPEN() de ventana y en el eventoROWFOCUSCHANGED de la DW de agenda

Como ves el panorama? Se oye imposible, pero no lo es, empecemosentonces…..

Evento OPEN()

Y el evento ROWFOCUSCHANGED

Al ejecutar la aplicación

Para finalizar haremos un reporte para poder verlo en pantalla oenviarlo a la impresora, entonces tu debes:

Ø En esta ventana, aumentar un tabpageØ Ponerle una DW y asociarla a d_agenda o crear una propia con

encabezadosØ Poner dos botones en el tabpage Pantalla y el otro ImpresorØ En el boton pantalla codificar el script

w_3.settransobject(sqlca);Ø dw_3.retrieve();Ø En el boton Impresor codificar el script

dw_3.settransobject(sqlca);Ø dw_3.retrieve();Ø long JobØØ Job = PrintOpen( )ØØ dw_3.Print()ØØ PrintClose(Job)

Espero que este curso haya satisfecho tus expectativas deprogramador y haber conocido el mundo maravilloso de PB, si deseasdocumentarte más puedes visitar www.powerbuilder.org owww.sybase.com. Editado por JAAF